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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top