System.Web.HttpException in Internetinformationsdienste
Dieser Artikel hilft Ihnen bei der Behebung des System.Web.HttpException Problems, das auftritt, wenn eine Anwendung im integrierten Pipelinemodus ausgeführt wird, und bietet eine Lösung.
Ursprüngliche Produktversion: Internetinformationsdienste Version 7.0 und höher
Ursprüngliche KB-Nummer: 2605401
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
- Sie führen eine Webanwendung aus, die für die Verwendung der integrierten Pipeline auf einem Webserver mit Microsoft-Internetinformationsdienste (IIS) 7.0 oder höher konfiguriert ist.
- Die Anwendung verwendet einen ISAPI-Filter, der für das Ereignis registriert
SF_NOTIFY_AUTHENTICATIONist. - Die global.asax-Eigenschaft der Anwendung implementiert das
Application_BeginRequestEreignis.
Unter diesen Bedingungen kann diese Ausnahme auftreten:
System.Web.HttpException: Diese Servervariable kann während der Ausführung der Anforderung nicht geändert werden.
Ursache
Es handelt sich hierbei um ein beabsichtigtes Verhalten.
Wenn IIS den ISAPI-Filter für das SF_NOTIFY_AUTHENTICATION Ereignis aufruft, wird die AUTH_USER Servervariable aktualisiert. Da die Anwendung für die Verwendung der integrierten Pipeline konfiguriert ist, sucht ASP.NET nach Änderungen an Servervariablen. AUTH_USERist eine der Variablen, die sich voraussichtlich nicht ändern wird, und daher ASP.NET die obige Ausnahme auslöst.
Diese Ausnahme wird nicht ausgelöst, wenn der Anwendungspool im klassischen Modus statt im integrierten Pipelinemodus ausgeführt wird.
Lösung
Eine der folgenden Methoden verhindert diese Ausnahme:
- Konfigurieren Sie den Anwendungspool für die Ausführung im klassischen Modus anstelle des integrierten Pipelinemodus.
- Verwenden Sie systemeigene oder verwaltete Http-Module, um Authentifizierungsbenachrichtigungen zu verarbeiten.
Weitere Informationen
Weitere Informationen finden Sie unter Entwickeln eines systemeigenen C\C++-Moduls für IIS 7.0.