w moim web.config cios można zobaczyć redirectMode = "ResponseRewrite". Czytam, że to jest to, czego potrzebuję, aby zachować kod statusu. Niestety, gdy tylko go otrzymam, otrzymuję:Jak korzystać z błędów niestandardowych i zachować kod odpowiedzi?
"Wystąpił wyjątek podczas przetwarzania Twojego żądania. Dodatkowo wystąpił inny wyjątek podczas wykonywania niestandardowej strony błędu dla pierwszego wyjątku." Żądanie zostało zakończone. "
Pominięcie tej zmiennej pomyślnie przekierowuje mnie do ~/Error/Index.cshtml, ale ma odpowiedź 200. doh. Każdy kierunek byłby bardzo doceniany, dzięki.
<system.web>
<compilation debug="true" targetFramework="4.5" />
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/Index">
<error statusCode="404" redirect="~/Error/Index"/>
<error statusCode="500" redirect="~/Error/Index"/>
</customErrors>
<httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL">
<remove statusCode="403"/>
<remove statusCode="404"/>
<remove statusCode="500"/>
<error statusCode="403" path="~/Error/Index" responseMode="File"/>
<error statusCode="404" path="~/Error/Index" responseMode="File"/>
<error statusCode="500" path="~/Error/Index" responseMode="File"/>
</httpErrors>
</system.webServer>
W moich filterconfig.cs:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// does this conflict?
filters.Add(new HandleErrorAttribute());
}
}
Dobre rozwiązanie, ale wadą tego jest to, że nie będziesz w stanie uzyskać szczegółowych komunikatów o błędach podczas programowania. –