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_AUTHENTICATION ist.
  • Die global.asax-Eigenschaft der Anwendung implementiert das Application_BeginRequest Ereignis.

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:

  1. Konfigurieren Sie den Anwendungspool für die Ausführung im klassischen Modus anstelle des integrierten Pipelinemodus.
  2. 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.