ich diesen Code haben:SPSite in Web-Service wirft 401 Fehler
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 ist auf Windows eingestellt. Wenn ich diesen Code über die Befehlszeile unter "External_app_user" -Konto ausführen, ist alles in Ordnung. Aber wenn ich diesen Code vom Webservice (außerhalb der WSS-Webapplikation) ausführe, dann ist das Ergebnis die HTTP-Antwort "401 UNAUTHORIZED" anstelle der SOAP-Antwort. Es ist seltsam, weil dieser Code im "try-catch" -Block ist, und wenn irgendeine Exception ausgelöst wird, habe ich eine eigene Fehlermeldung in der SOAP-Antwort zurückgegeben.
Der Code läuft auf demselben Computer wie WSS.
Wenn ich den Webservice von webbroser auf dem Rechner starte, auf dem der Webservice läuft, wird das klassische Windows Login-Formular angezeigt. Wenn ich den Webservice von einem Webbrowser auf einem anderen Computer aus führe, erhalte ich nur die HTTP-Antwort "401 UNAUTHORIZED".
Der Web-Service läuft unter korrektem Account. Dieses Konto hat Zugriff auf das WSS (getestet über die Sharepoint-Website). Wenn ich versuche, "System.Security.Principal.WindowsIdentity.GetCurrent(). Name" zu erhalten, wird der korrekte Benutzername zurückgegeben.
In web.config gesetzt "< identity impersonate =" true“username = "_ my_username_" password = "_ my_password_"/>.
Wer Ahnung hat, was falsch ist?
Anonyme und Windows-Authentifizierung ist zulässig. Jetzt bekomme ich Stacktrace, und der 401 UNAUTHORIZED error bekommt von "AllWebs" -Eigenschaft bekommen. – TcKs