Question

J'ai créé et déployé un service WCF dans SharePoint et j'envoie des requêtes en utilisant JQuery.Tout fonctionne bien, sauf les sous-sites.

Disons que j'ai ces deux URL de service :

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

Lorsque j'utilise ces deux URL, le SPContext.Current.Site est le même et est correct.
Mais le SPContext.Current.Web c'est la même chose, ce qui est incorrect.En utilisant la deuxième URL, le SPWeb L'objet doit être le sous-site Web et non le site Web racine.

Comment puis-je obtenir le sous-site en tant que SPWeb objet?Dois-je toujours transmettre l’URL Web en tant que paramètre à la méthode WCF ?

Était-ce utile?

La solution

Après recherche, j'ai conclu que le SPContext.Current.Web retournera toujours le RootWeb j'ai donc besoin de l'URL du sous-site Web spécifique.

Pour éviter de transmettre l'URL SPWeb à chaque méthode WCF pour laquelle j'ai besoin d'un objet SPWeb, je peux procéder comme suit :

J'exécute mon service WCF en mode de compatibilité ASP.NET afin de pouvoir utiliser le HttpContext objet, et je peux utiliser HttpContext.Current.Request.RawUrl.Cette propriété renvoie tout ce qui se trouve dans la chaîne URL après le nom de domaine.Ensuite, je peux tronquer cette chaîne pour obtenir l'URL relative du sous-Web et la transmettre au OpenWeb() méthode.

Exemple:

Côté client, l'argument URL de l'appel JQuery AJAX est :

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

Côté serveur si j'utilise HttpContext.Current.Request.RawUrl Je reçois:

/subsite/_vti_bin...../MethodName

Ensuite, après avoir tronqué cette chaîne, je passe le /subsite au OpenWeb() méthode.

Toute autre idée est grandement appréciée.

Autres conseils

J'avais le même cas.Mais j'ai pris l'URL d'ici:

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

alors j'ai pu créer un objet spsite:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top