2008-10-09 17 views
18

Używam IIS6, napisałem moduł HttpModule i otrzymuję ten błąd? Po uruchomieniu go w sieci okaże się, że ten problem jest spowodowany przez platformę .NET 3.5, więc umieściłem to na komputerze, na którym nie zainstalowałem .NET 3.5, ale problem nadal istnieje!IIS6 + HttpModule: Ta operacja wymaga zintegrowanego trybu potoku IIS

+0

Mógłbyś rozwinąć co twój moduł robi? – AnthonyWJones

+0

Sprawdź, czy hasło użytkownika jest wyliczone, a następnie zmusić go, aby to zmienić. – sdhjl2000

+0

Należy podać kod pokazujący miejsce wystąpienia błędu. –

Odpowiedz

7

Tylko IIS7 obsługuje zintegrowany potok. W IIS7 HttpModule może uczestniczyć we wszystkich żądaniach przychodzących na serwer WWW, nie tylko tych, które są ukierunkowane na określone rozszerzenia plików.

II6 używa tego, co IIS7 nazywa klasycznym potokiem, gdzie HttpModules może angażować się tylko wtedy, gdy wcześniejszy potok oparty na ISAPI ustali, że odwzorowanie skryptu wymaga, aby żądanie zostało przekazane do ASP.NET.

39

Moja próba psychicznym debugowania: używasz oświadczenie jak:

Response.Headers("X-Foo") = "bar" 

Jeśli tak jest w istocie, zmieniając tym, jak pokazano poniżej obejść ten problem:

Response.AddHeader("X-Foo", "bar") 
+0

Czy "response.Headers.Location = new Uri (...);" złamie IIS6 i da 500 'Internal Server Error'? – Blaise

6

Właśnie natknąłem się na ten problem. Korzystanie z IIS6 i .NET 3.5. Naprawiono dla mnie użycie Response.AddHeader zamiast Response.Headers.Add. HTH.

0

Zainspirowany innymi odpowiedziami, stwierdziłem, że uzyskuje dostęp do obiektu Response.Headers obiektu powodującego "operację wymaga wyjątku trybu zintegrowanego potoku IIS".

Unikać .Headers i wywoływać inne (starsze?) Funkcji pomocniczych, takich jak: (! W moim przypadku)

  • Response.AddHeader() i
  • Response.ClearHeaders()
Powiązane problemy