SPSite in Web-Service wirft 401 Fehler
-
05-07-2019 - |
Frage
Ich habe diesen Code:
using ( var site = new SPSite( myUrl ) ) {
using ( var web = site.AllWebs[0] ) {
// read-only operations
}
}
Die "myURL" ist Top-Domain-URL mit WSS 3.0. Die Authentifizierung wird auf Windows. Wenn ich diesen Code aus Befehlszeile unter „external_app_user“ Konto laufen, ist alles in Ordnung. Aber wenn ich diesen Code von Webservice laufen (außerhalb von WSS Webapplikation), dann ist das Ergebnis HTTP-Antwort „401 Unauthorized“ anstelle von SOAP-Antwort. Es ist seltsam, weil dieser Code in „try-catch“ -Block ist, und wenn sie jede excception geworfen ich eigene Fehlermeldung in SOAP-Antwort zurückgegeben.
Der Code auf der gleichen Maschine wie WSS ausgeführt wird.
Wenn ich den Webservice von Webbroser auf der Maschine laufen, wo Web-Dienst ausgeführt wird, die klassische Windows-Formular anmelden gezeigt. Wenn ich den Webservice von Web-Browser auf einem anderen Computer laufen lasse, erhalte ich nur „401 Unauthorized“ http Antwort.
Der Web-Dienst wird unter korrektem Konto ausgeführt wird. Dieses Konto hat Zugriff auf die WSS (via Sharepoint-Website getestet). Wenn ich bekommen versuchen „System.Security.Principal.WindowsIdentity.GetCurrent (). Name“ den korrekten Benutzernamen zurückgegeben wird.
In web.config gesetzt "
Wer hat Ahnung, was falsch ist?
Lösung 3
ich die Lösung gefunden: http://solutionizing.net/2009 / 01/06 / elegant-SPSite-Elevations /
Andere Tipps
Der Grund, warum Sie nicht fangen die 401 ist, da Sharepoint Brauch hat für diese Ausnahmebehandlung finden Sie in diesem Thread: Kann nicht die Sharepoint-Zugriff verweigert Fehler fangen (einschließlich einem Vorschlag, wie es deaktivieren).
Sie können in IIS überprüfen, ob beide Anonym und Windows-Authentifizierung erlaubt ist. Dann können Sie durch so anonym werden, so dass, anstatt Ihre Fenster Identität des Lesens, die eine nicht autorisierte später führt.