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
Odpowiedz
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.
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")
Czy "response.Headers.Location = new Uri (...);" złamie IIS6 i da 500 'Internal Server Error'? – Blaise
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.
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()
iResponse.ClearHeaders()
Mógłbyś rozwinąć co twój moduł robi? – AnthonyWJones
Sprawdź, czy hasło użytkownika jest wyliczone, a następnie zmusić go, aby to zmienić. – sdhjl2000
Należy podać kod pokazujący miejsce wystąpienia błędu. –