Aus der Praxis – Bereitstellung eines WCF Service für Aufruf in einer SharePoint 2013 App
avatar

In zwei vorherigen Artikel habe ich beschrieben, wie man einen WCF Dienst erstellt, mit dem man per Server Object Model auf SharePoint 2013 zugreifen kann und dann die Daten in einem Webpart abruft. Hier die Links zu den Artikeln:

Teil 1

Teil 2

Nun soll es darum gehen, diesen WebService innerhalb einer SharePoint App abzurufen. Bevor das gelingt, muss jedoch der Service erweitert werden, damit die Daten per JQuery im JSON Format abgerufen werden können.

Dazu fügen wir eine neue Methode ein und ändern wir den Code des WCF Service wie folgt:

Service Contract:

[OperationContract]
[WebGet(UriTemplate = "/GetSiteTitleJson", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
string GetSiteTitleJson();

Service Implementation:

public string GetSiteTitleJson()
{
    string callingUser = GetIdentity();
    string spAccessUser;
    string title;

    using (SPSite site = new SPSite("https://sharepoint.hansevis05a.dev.hansevision.de/sites/developer"))
    {
        spAccessUser = site.RootWeb.CurrentUser.LoginName;
        title = site.RootWeb.Title;
    }
    return string.Format("{0} {1} {2}", callingUser, spAccessUser, title);
}

In der web.config legen wir nun einen zusätzlichen Endpunkt an:

<service name="SP2013Service.SP2013Service" behaviorConfiguration="Behavior_HanseVision">
  ...
  <endpoint  address="json" behaviorConfiguration="Behavior_HanseVision_Json" binding="webHttpBinding" bindingConfiguration="Binding_HanseVision_Json" contract="SP2013Service.ISP2013Service">
  </endpoint>
</service>

Ebenso ein neues Endpunktverhalten:

<behaviors>
  ...
  <endpointBehaviors>
    <behavior name="Behavior_HanseVision_Json">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

Und ein neues Binding:

<bindings>
  ...
  <webHttpBinding>
    <binding name="Binding_HanseVision_Json">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </webHttpBinding>
</bindings>

Würden wir den bestehende Methoden und den bestehenden Endpunkt ändern bzw. überschreiben, wäre ein “normaler” Zugriff auf die Webmethode nicht mehr möglich.

Nun sollte der WebService im Browser sowohl auf der bestenden Url aufrufbar sein (in meinem Fall die Url http://sp2013service.dev.hansevision.de/sp2013service.svc) als auch über den neuen JSON Endpunkt http://sp2013service.dev.hansevision.de/sp2013service.svc/json/GetSiteTitleJson. Ruft man die Url auf, kommt ein Download-Fenster und man kann den Inhalt der Rückgabe anzeigen lassen:

image

image

Im nächsten Blogartikel zeige ich dann, wie man den bereitgestellten Service in einer SharePoint App abruft. Dabei steht mir allerdings noch die Authentifizierung der App gegenüber dem WebService im Wege. Noch habe ich nur einen anonymen Zugriff zum Laufen bekommen. Ich bin selbst gespannt, wie das zu lösen ist!

Ein Gedanke zu “Aus der Praxis – Bereitstellung eines WCF Service für Aufruf in einer SharePoint 2013 App
avatar

  1. Pingback: Aus der Praxis – Bereitstellung eines WCF Service für Aufruf in einer SharePoint 2013 App - SharePoint Blogs in German - Bamboo Nation

Schreibe einen Kommentar