2009-07-30 8 views
1

Je possède ce code:SPSite en service Web jette erreur 401

using (var site = new SPSite(myUrl)) { 
    using (var web = site.AllWebs[0]) { 
     // read-only operations 
    } 
} 

Le "myurl" est top URL de domaine avec WSS 3.0. L'authentification est définie sur Windows. Si j'exécute ce code à partir de la ligne de commande sous le compte "external_app_user", tout va bien. Mais si j'exécute ce code à partir de webservice (en dehors de l'application Web WSS), alors le résultat est la réponse http "401 NON AUTORISÉE" au lieu de la réponse SOAP. C'est étrange, parce que ce code est dans le bloc "try-catch", et si une quelconque exception est renvoyée, j'ai retourné un message d'erreur dans la réponse SOAP.

Le code s'exécute sur la même machine que WSS.

Si j'exécute le webservice à partir de webbroser sur la machine sur laquelle le service Web est en cours d'exécution, le formulaire de connexion Windows classique est affiché. Si j'exécute le webservice de webbrowser sur un autre ordinateur, je reçois seulement une réponse http "401 NON AUTORISÉE".

Le service Web s'exécute correctement. Ce compte a accès au WSS (testé via le site web sharepoint). Si j'essaye d'obtenir "System.Security.Principal.WindowsIdentity.GetCurrent(). Name" le nom d'utilisateur correct est retourné.

Dans web.config est mis "< identité impersonate =" true » userName = "_ my_username_" password = "_ my_password_"/>.

Toute personne a idée de ce qui est mal?

Répondre

1

Vous pouvez vérifier dans . IIS si les deux anonymes et l'authentification windows est autorisé Ensuite, il peut être vous permettre par le biais comme anonyme, au lieu de lire votre identité windows, ce qui conduit à un non autorisé plus tard

+0

L'authentification anonyme et Windows est autorisée. Maintenant, je reçois stacktrace, et l'erreur 401 UNAUTHORIZED obtient de la propriété "AllWebs" sur get. – TcKs

2

La raison pour laquelle vous ne pouvez pas attraper le 401 est que SharePoint a une gestion personnalisée pour cette exception, voir ce fil: Cannot catch the SharePoint Access denied error (avec une suggestion pour l'éteindre).

+0

+1 C'est très utile, merci. – TcKs

Questions connexes