SharepointTips


Sharepoint Dev And Configuration

Dott. Pasquale Pannuto
(Senior Developer)
TS: Microsoft .NET Framework - Application Development Foundation
MCTS: Microsoft Office SharePoint Server 2007, Configuration
PRO: Designing and Developing Microsoft SharePoint 2010 Applications
TS: SharePoint 2010, Application Development


<script type="text/javascript"><!--
google_ad_client = "ca-pub-7328846173515313";
/* Google */
google_ad_slot = "4019879245";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Sviluppi WCF REST (sharepoint)

E' da un bel pò che non scrivo un post, un pò impegni di lavoro un pò pochi argomenti nuovi.
Ultimamente mi è capitato di dover sviluppare per un cliente un servizio WCF Rest, da utilizzare in un applicazione mobile sotto sharepoint.
Lo sviluppo non è molto differente da un classico servizio WCF, serve solo un pò di accuratezza.

come prima cosa creiamo un progetto sharepoint (in Visual studio 2010)


Inseriamo nel progetto un riferimento alla Cartella "ISAPI" di sharepoint.
Cliccando con il tasto destro sul progetto come da figura:



A questo punto non ci resta che creare il nostro servizio.
Nella cartella "ISAPI" sono stati inseriti 2 file:
1. AccessList.svc
2. Web.config

AccessList.svc:

<%@ ServiceHost Debug="true" Language="C#" Service="[NameSpace].AccessList, [NameSpace], Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxx" CodeBehind="AccessList.cs"
Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressDataServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"  %>

Microsoft.SharePoint.Client.Services.MultipleBaseAddressDataServiceHostFactory (utilizzare il REST)

Web.config:

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>

    <!-- we need this to enable session -->
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <behaviors>
      <endpointBehaviors>

        <!-- our configuration for rest relies on web http -->
        <behavior name="RestBehavior">
          <webHttp />
        </behavior>

      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>

        <!-- a selection of security bindings that you can use in the service registration below-->
        <binding name="WindowsAuthenticationBasicHttpBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
          </security>
        </binding>
        <binding name="NoSecurityHttpBinding">
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>

      </webHttpBinding>
    </bindings>
    <services>

      <!-- register our wcf service -->
      <service name="[NameSpace].AccessListBehavior" >
        <endpoint address=""
                  binding="webHttpBinding"
                   behaviorConfiguration="RestBehavior"
                  contract="[NameSpace].IAccessList"
                  bindingConfiguration="NoSecurityHttpBinding">
        </endpoint>
      </service>

    </services>
  </system.serviceModel>
</configuration>

nel web.config si occupa di esporre il servizio.

Nel file AccessList.cs:

        [ServiceBehavior]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        public class AccessList : IAccessList
       {
             SPList oList;
             string _CurrentURL = string.Empty;
             public System.Collections.Generic.List<entry> GetUFList(string list, ...
             {
                ...
             }
       }

viene scitto il codice che si occupa di erogare il servizio vero e proprio.

Nel file IAccessList.cs:

è presente il contract del servizio:

        [ServiceContract]
        public interface IAccessList
        {
            [OperationContract]
            [WebGet(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare]
             public System.Collections.Generic.List<entry> GetUFList(string list, ... )

Facciamo il deploy sul server Sharepoint, a questo punto il servizio può essere richiamato nel seguente modo:

http://[Server]:[Port]/_vti_bin/listaccess/accesslist.svc/

Approfondimenti:
http://msdn.microsoft.com/it-it/magazine/dd315413.aspx

Categoria: -
venerdì, 27 mag 2011 Ore. 12.54
Statistiche
  • Views Home Page: -459
  • Views Posts: 57.136
  • Views Gallerie: 2
  • n° Posts: 64
  • n° Commenti: 3
Calendario
dicembre 2024
lmmgvsd
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003