Domanda

Sto combattendo con la distribuzione dei servizi sotto l'infrastruttura di SharePoint.

Succede che ho passato molto tempo a cercare di configurare un servizio Web di riposo SharePoint 2010 nella cartella ISAPI (_vti_bin). Il servizio funziona dopo un semplice implementazione, ma non riesco a trovare un modo per ottenere informazioni degli utenti.

Ho provato ad accedervi da

    .
  • spontext.web.currentuser
  • serviceSecurityContext.Current.WindowsIdentity.name
  • thread.currentprincipal.identity.name

    Ma ogni volta che era nullo. Ho provato ad applicare un web.config personalizzato sul mio servizio Web in modo che possa specificare l'impersonazione e così via ma non riesco a risolvere il problema.

    Ho risolto il problema lo schierando sotto i layout in modo da chiedere:

      .
    • Qual è la differenza tra le due cartelle (nel comportamento, conosco già la posizione e la distribuzione tra le applicazioni Web)?
    • Perché ISAPI è preferito per la distribuzione del servizio Web?
    • C'è qualche "buona pratica" Sto violando lo schierando sotto i layout?

      Grazie mille

È stato utile?

Soluzione

If you deploy your web service to the layouts directory, you may run into some unexpected behavior with your web service.

ISAPI is the best practice location to deploy any custom web services. This is because this folder is set up to serve your web services via wswsdl and wsdisco.

As explained by James Tsai in his article Where do you deploy custom SharePoint web service files to?:

[The] _vti_bin (12\ISAPI) virtual folder has been configured to serve requests differently compared to other virtual folders in the SharePoint site.

Every web service request made to this directory will be parsed by wswsdl.aspx and wsdisco.aspx files in 12\ISAPI. wswsdl.aspx and wsdisco.aspx files then find correspondence (sic) wsdl and disco information for web service request and output correct contract reference and SOAP address.

...

Without this mechanism (web service request made to any other virtual folder on SharePoint site) the ASP.NET auto-generated disco and wsdl will be used. Since auto-generated disco and wsdl are unaware of the SharePoint service URL virtualization, results returned by web service become unreliable.

Check out the link for a test / proof of concept.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top