Alle,
Ich habe einen WCF-Webdienst (nennen wir ihn Dienst "B") unter IIS mit einem Dienstkonto (VM, Windows 2003 SP2) gehostet. Der Dienst bietet einen Endpunkt, der WSHttpBinding mit den Standardwerten mit Ausnahme von maxReceivedMessageSize, maxBufferPoolSize, maxBufferSize und einige der Timeouts, die erhöht wurden, verwendet.
Der Webdienst wurde mit dem Visual Studio Load Test Framework mit rund 800 gleichzeitigen Benutzern getestet und hat alle Tests erfolgreich bestanden, ohne dass Ausnahmen ausgelöst wurden. Der Proxy im Einheitstest wurde aus der Konfiguration erstellt.
Es gibt eine Sharepoint-Anwendung, die den Office Sharepoint Server Search-Dienst verwendet, um die Webdienste "A" und "B" aufzurufen. Die Anwendung erhält Daten vom Dienst "A", um eine Anfrage zu erstellen, die an den Dienst "B" gesendet wird. Die vom Dienst "B" kommende Antwort wird für die Suche indiziert. Der Proxy wird programmatisch mit Hilfe der ChannelFactory erstellt.
Wenn Dienst "A" weniger als 10 Minuten dauert, sind die Anrufe bei Dienst "B" erfolgreich. Wenn der Dienst "A" jedoch mehr Zeit in Anspruch nimmt (~20 Minuten), wird bei den Aufrufen von Dienst "B" die folgende Ausnahme ausgelöst:
Ausnahmemeldung: Ein ungesicherter oder nicht korrekt gesicherter Fehler wurde von der Gegenstelle empfangen. Siehe die innere FaultException für den Fehlercode und Details Innere Exception-Meldung: Die Nachricht konnte nicht verarbeitet werden. Dies liegt höchstwahrscheinlich daran, dass die Aktion "namespace/OperationName" falsch ist oder dass die Nachricht ein ungültiges oder abgelaufenes Sicherheitskontext-Token enthält oder dass eine Nichtübereinstimmung zwischen Bindungen besteht. Das Sicherheitskontext-Token wäre ungültig, wenn der Dienst den Kanal aufgrund von Inaktivität abbricht. Um zu verhindern, dass der Dienst inaktive Sitzungen vorzeitig abbricht, erhöhen Sie die Empfangszeitüberschreitung für die Bindung des Dienstendpunkts.
Die Einstellungen für die Bindung sind gleich, die Zeit auf dem Client-Server und dem Webdienst-Server wird mit dem Windows-Zeitdienst synchronisiert, dieselbe Zeitzone.
Wenn ich mir den Server ansehe, auf dem der Webdienst "B" gehostet wird, sehe ich, dass die folgenden Sicherheitsfehler protokolliert werden:
Quelle: Sicherheit
Kategorie: An-/Abmeldung
Ereignis ID: 537
Benutzer NT AUTHORITY \SYSTEM
Anmeldung fehlgeschlagen:
Der Grund: Bei der Anmeldung ist ein Fehler aufgetreten
Anmeldeart: 3
Logon-Prozess: Kerberos
Authentifizierungspaket: Kerberos
Status-Code: 0xC000006D
Substatus-Code: 0xC0000133
Nach der Lektüre einiger Blogs im Internet bedeutet der Statuscode STATUS_LOGON_FAILURE und der Substatuscode STATUS_TIME_DIFFERENCE_AT_DC. Aber ich habe bereits die Uhren von Server und Client überprüft und sie sind synchronisiert.
Ich habe auch bemerkt, dass das Sicherheitstoken irgendwo im Client-Server zwischengespeichert zu sein scheint, weil sie einen anderen Prozess haben, der den Webdienst "B" unter Verwendung desselben Dienstkontos aufruft und beim ersten Aufruf erfolgreich Daten erhält. Dann wird der Prozess gestartet, um die Indizes des Office Sharepoint Server-Suchdienstes zu aktualisieren, und er schlägt fehl. Wenn dann der erste Prozess erneut aufgerufen wird, schlägt er ebenfalls fehl.
Hat jemand Erfahrung mit dieser Art von Problemen oder hat irgendwelche Ideen?
Herzliche Grüße,
--Damian