Domanda

Ho creato e distribuito un servizio WCF in SharePoint e sto inviando richieste utilizzando jQuery.Ogni cosa sta funzionando bene tranne che per i siti secondari.

Diciamo che ho questi due URL di servizio:

 - http://localhost:1111/_vti_bin...../MethodName
 - http://localhost:1111/subsite/_vti_bin...../MethodName  
.

Quando uso questi due URL, il SPContext.Current.Site è lo stesso ed è corretto.
Ma il SPContext.Current.Web è lo stesso che non è corretto.Usando il secondo URL L'oggetto SPWeb deve essere il Sub Web e non il Web root.

Come posso ottenere il sito secondario come oggetto SPWeb?Devo passare sempre l'URL Web come un parametro sul metodo WCF?

È stato utile?

Soluzione

Dopo aver cercato ho concluso che il SPContext.Current.Web restituisse sempre il RootWeb, quindi ho bisogno dell'URL del Sub Web specifico.

Per evitare di passare l'URL SPWEB ad ogni metodo WCF in cui ho bisogno di un oggetto SPWeb, posso fare quanto segue:

Sto eseguendo il mio servizio WCF in modalità Comtitibilità ASP.NET, quindi posso utilizzare l'oggetto HttpContext e posso utilizzare HttpContext.Current.Request.RawUrl.Questa proprietà restituisce ogni cosa nella stringa URL dopo il nome di dominio.Quindi posso troncare questa stringa per ottenere l'URL relativo del Sub Web e passarlo al metodo OpenWeb().

Esempio:

A lato client L'argomento URL della chiamata JQuery Ajax è:

 http://localhost:1111/subsite/_vti_bin...../MethodName
.

sul lato server se utilizzo HttpContext.Current.Request.RawUrl ottengo:

/subsite/_vti_bin...../MethodName
.

Poi dopo aver troncato questa stringa, passisco il /subsite al metodo OpenWeb().

Qualsiasi altra idea è molto apprezzata.

Altri suggerimenti

Ho avuto lo stesso caso.Ma ho preso l'URL da qui:

Uri requestUri = System.ServiceModel.OperationContext.Current.RequestContext.RequestMessage.Headers.To;
.

Quindi sono stato in grado di creare un oggetto SPSite:

using (SPSite site = new SPSite(requestUri.Scheme + "://" + requestUri.Host)
{ 
    //your code
}
.

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