WebService - Fehler nach recyceltem Anwendungspool (SaveSessionID)

16/12/2008 - 16:53 von TA | Report spam
Hallo NG,

beim ersten Aufruf eines Web-Service (und nur beim ersten Aufruf nachdem ein
"iisreset" aufgerufen wurde oder sich der Anwendungspool recycelt hatte) der
unter localhost erreichbar ist, bekomme ich vom SOAP folgende Fehlermeldung:

"Die Antwort ist kein wohlgeformter XML-Code."

Bei genauerer Betrachtung des Ergebnisses per Firefox im Quelltext sieht
man, dass als XML-Antwort sowohl das korrekte Ergebnis XML (wohlgeform)
geliefert wird aber direkt darunter in der Antwort noch eine
Exception-Meldung enthalten ist. (durch diese zusàtzliche Fehlermeldung ist
diese Antwort natürlich nicht mehr wohlgeformt, klar)

Diese Meldung steht dann natürlich nicht nur unter dem wohlgeformten
Ergebnis XML sondern auch wie folgt im Ereignisprotokoll des Webservers:

********** snip **********

Ereigniscode: 3005
Ereignismeldung: Es ist eine unbehandelte Ausnahme aufgetreten.
Ereignis-ID: 6db0aa4714aa45c29ecb0fe5fc12ec58
Ereignissequenz: 12
Vorkommen: 1

Prozessinformationen:
Prozess-ID: 9768
Prozessname: w3wp.exe
Kontoname: NT-AUTORITÄT\NETZWERKDIENST

Ausnahmeinformationen:
Ausnahmetyp: HttpException
Ausnahmemeldung: Es wurde eine Sitzungs-ID erstellt, die jedoch nicht
gespeichert werden kann, da die Antwort bereits von der Anwendung gelöscht
wurde.

Anforderungsinformationen:
Anforderungs-URL: http://localhost/ItemService.asmx/GetItems
Anforderungspfad: /ItemService.asmx/GetItems
Benutzerhostadresse: ::1
Benutzer: xyz\abc
Ist authentifiziert: True
Authentifizierungstyp: NTLM
Threadkontoname: NT-AUTORITÄT\NETZWERKDIENST

Threadinformationen:
Thread-ID: 3
Threadkontoname: NT-AUTORITÄT\NETZWERKDIENST
Identitàtswechsel für: False
Stapelüberwachung: bei
System.Web.SessionState.SessionIDManager.SaveSessionID(HttpContext context,
String id, Boolean& redirected, Boolean& cookieAdded)
bei System.Web.SessionState.SessionStateModule.CreateSessionId()
bei System.Web.SessionState.SessionStateModule.DelayedGetSessionId()
bei System.Web.SessionState.SessionStateModule.ReleaseStateGetSessionID()
bei System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs)
bei
System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously)

Versionsinformationen Microsoft .NET Framework-Version: 2.0.50727.3053;
ASP.NET-Version: 2.0.50727.3053

********** /snip **********

Vermutung:

Es wird im Hintergrund vom .NET-Framework eine Benutzersession erzeugt die
dann aber nicht gespeichert werden kann da die Anwendung im Applikationpool
noch nicht da ist!?

Details:

Da ich in der kompletten Web-Service-Anwendung und in den Anwendungen
dahinter natürlich niemald "SaveSessionID" aufrufe bin ich aktuell ratlos
woher dies kommt und wie man dies beim ersten Aufruf des Web-Service umgehen
kann.

Hinweis:

Ruft man den WebService einfach zweimal nach einem "iisreset" oder
recyceltem Anwendungspool hintereinander auf, ist die zweite Antwort
natürlich komplett korrekt und ohne diesen Fehler. Dieser "workaraound" ist
jedoch im konkreten Anwedungsfall keine Option und da man keinen direkten
Einfluss darauf hat, wann sich der Anwengundspool recycelt, bin ich aktuell
Hilflos und weiß keinen Ansatzpunkt zur Problemlösung...

Könnte es am NTLM als Authentifizierungstyp liegen?

Wie ist der Ablauf nach einem "iisreset" und dem ersten Aufruf einer
Anwendung, wann schaufel der IIS Daten in den Anwendungspool?

Sonstige Ideen von euch?

Viele Grüße,

Tobi
 

Lesen sie die antworten

#1 Lutz Elßner
16/12/2008 - 21:34 | Warnen spam

Ausnahmeinformationen:
Ausnahmetyp: HttpException
Ausnahmemeldung: Es wurde eine Sitzungs-ID erstellt, die jedoch nicht gespeichert werden kann, da die Antwort bereits von der
Anwendung gelöscht wurde.




Existiert eine global.asax und was steht da drin?

Ist die Session z.B. in web.config anders konfiguriert?

Braucht der Webservice überhaupt Sessions und ist das bei
jeder WebMethod aktiviert:
<WebMethod(EnableSession:=True)>

Lutz

Ähnliche fragen