Question

Voici le scénario:

  • Service personnalisé WCF déployé dans SharePoint 2010
  • Site utilise l'authentification basée sur les revendications (FBA, NTLM)
  • .svc est déployé à ISAPI dans la ruche
  • Le service est configuré en utilisant l'usine de service personnalisé
  • Le service est appelé à partir du navigateur en utilisant AJAX
  • Je suis en mesure de frapper le service très bien; service et demandes d'accepter

Voici le problème: SPContext.Current est toujours null. Je sais qu'il existe différentes techniques de « faux » un SPContext ou évidemment pour créer le SPSite et SPWeb manuellement, mais devrait la SPContext.Current nulle dans les services WCF personnalisés lors de l'authentification basée sur les revendications ? Ou ai-je manqué quelque part une étape?

Je ne l'ai jamais rencontré ce problème avec l'authentification en mode classique, donc je me demande si cela est juste quelque chose de particulier à WCF + SharePoint + authentification basée sur les revendications et s'il y a des solutions de contournement possibles.

Merci pour toute idée!

- Chuck

Était-ce utile?

La solution

Arrrrrgh! Enfin pensé à elle après déconner avec ça pour une bonne journée.

Je veux quitter ce ici au cas où quelqu'un d'autre se jette dans le même problème.

Quand j'enregistre le point final Javascript, j'utiliser l'URL complète du service.

Donc, si la racine de mon site est à:

http://mydomain.com/sites/site1

J'inscrire à l'adresse:

http://mydomain.com/sites/site1/_vti_bin/myservicedir/myservice.svc/js

Ceci est tout bon et bien. Lorsque la demande est faite pour récupérer les talons Javascript, je peux voir dans Fiddler que la demande va à:

/sites/site1/_vti_bin/myservicedir/myservice.svc/js

Cependant, je ne viens remarqué (enfin, après avoir regardé pendant des heures ..........) que quand je fais un appel à une méthode de service, l'URL est coupée à:

/_vti_bin/myservicedir/myservice.svc/MethodName

Ainsi mon SPContext est toujours null car il n'y a pas de contexte de site spécifié dans l'URL.

En regardant les talons Javascript de SharePoint, je pouvais voir que l'appel à set_path() utilisait l'URL hachée. Assez simple pour fixer en appelant set_path() à nouveau avec le bon chemin.

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