2010-07-06 10 views
5

Mam aplikację ASP.NET MVC, która zwraca 404 i czasami 500 kodów stanu w różnych, odpowiednich punktach.Uzyskiwanie błędu IIS7 "jeden liniowiec" podczas używania niestandardowych ustawień błędów w web.config

Response.StatusCode = (int)HttpStatusCode.NotFound; 

Kiedy ustawić jeden z tych kodów stanu, ja również ustawić właściwość TrySkipIisCustomErrors odpowiednio.

Response.TrySkipIisCustomErrors = true 

Co chciałbym teraz zrobić, to skonfigurować IIS, aby przejść przez te błędy, które ja ustawiania się i złapać jakiekolwiek inne błędy, które mogą wystąpić (takie jak 404 na plikach statycznych, gdzie nie jestem wysyłania żądania do ASP.NET lub Uncaught 500 błędów w mojej aplikacji (gdzie przypuszczalnie propety TrySkipIisCustomErrors nie zostały ustawione przez framework)

Moja system.webServer/httpErrors węzeł wygląda następująco:.

<httpErrors existingResponse="Auto" errorMode="Custom"> 
</httpErrors> 

Powoduje to zwrócenie moich własnych błędów ASP.NET, gdzie zestaw TrySkipIisCustomErrors = true, a standardowe strony błędów IIS dla Uncaught 500s, statyczne błędy 404 plików itp

Następnie próbowałem modyfikując je tak:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL"> 
    <clear /> 
</httpErrors> 

uważam, że powinno to wyświetlaj mojego niestandardowej strony błędu w miejsce standardowego IIS. Jednak po dodaniu tego kodu otrzymuję komunikat o błędach IIS w jednym wierszu ("Nie można wyświetlić strony, ponieważ wystąpił wewnętrzny błąd serwera.") I zwraca kod stanu 500.

Zakładam, że jest to spowodowane błędem w mojej konfiguracji, ale nie mogę do końca zrozumieć, co robię źle!

Próbowałem również tego podejścia, z tych samych wyników:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File"> 
    <clear /> 
</httpErrors> 

Nawet ustawienie przekierowania do zupełnie innego adresu URL daje ten sam problem.

Używam tej strony między innymi w celach informacyjnych: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

Plik błędu zdecydowanie istnieje i mogę go bezpośrednio trafić za pomocą przeglądarki.

Odkładając na bok, nie jestem całkowicie pewien, co powinienem zrobić z węzłem system.Web \ customErrors. Czy jest to ustawienie tylko IIS6, czy w jakiś sposób dotyczy ASP.NET? Obecnie nie uwzględniam go w moim web.config.

+0

Udało ci się to rozgryźć?Mam ten sam problem: s – Robba

+0

Jakie błędy występują w dzienniku zdarzeń systemu Windows? Czy ustawienie "Tryb zarządzanego potoku" puli aplikacji jest ustawione na tryb "Zintegrowany" lub "Klasyczny"? (Powinien być 'Zintegrowany' dla twojego scenariusza.) –

+0

Pula aplikacji jest w trybie zintegrowanym. Nadal występują problemy i nie można znaleźć rozwiązania. W dzienniku zdarzeń nie ma błędów. Dość frustrujące! – Jamie

Odpowiedz

1

dodaj to do swojego węzła system.webserver. Poinformuje IIS, aby zezwolił na błędne informowanie o błędach przez ASP.Net.

<httpErrors existingResponse="PassThrough" /> 
+0

dzięki za pomoc, że przestanę wyrywać włosy, głupio nie mogę dać mi odpowiedzi 500, jak chcę –

1

wiem, jest to stara sprawa, ale to identyczny problem I były w ciągu ostatnich kilku dni, że po prostu niedawno zorientowali się. Co pracował dla mnie:

spróbuj usunąć element

<httpErrors> 

z web.config całkowicie.

Powiązane problemy