asp.net-mvc
Obsługa błędów HTTP
Szukaj…
Wprowadzenie
Każda witryna musi obsługiwać błędy. Możesz pozwolić swoim użytkownikom zobaczyć standardowe strony błędów 404 lub 500, które IIS rozpowszechniają, lub, korzystając z Web.Config i prostego kontrolera, możesz przechwycić te błędy i dostarczyć własne niestandardowe strony błędów.
Podstawowe ustawienia
Ten przykład obejmie utworzenie niestandardowej strony błędu dla strony 404 nie znalezionej i błędu serwera 500. Możesz rozszerzyć ten kod, aby przechwycić dowolny kod błędu, którego potrzebujesz.
Web.Config
Jeśli używasz IIS7 i nowszych wersji, zignoruj węzeł <CustomError..
i zamiast tego użyj <httpErrors...
Dodaj w węźle system.webServer
:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
<error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
</httpErrors>
Informuje to witrynę, aby kierowała wszelkie błędy 404 na ~/error/notfound
i wszelkie 500 błędów na ~/error/servererror
. Zachowa również żądany adres URL (zamiast transferu przekieruj ), aby użytkownik nigdy nie widział adresu URL strony ~/error/...
Następnie potrzebujesz nowego kontrolera Error
aby ...
public class ErrorController : Controller
{
public ActionResult servererror()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View();
}
public ActionResult notfound()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}
}
Kluczową rzeczą, na którą należy zwrócić uwagę, jest Response.TrySkipIisCustomErrors = true;
. Spowoduje to ominięcie usług IIS i wymusi przejście przez stronę błędów.
Na koniec utwórz odpowiednie Widoki NotFound
i ServerError
i ServerError
im styl, aby wszystko ServerError
ładnie i bezproblemowo w projekcie witryny.
Hej presto - niestandardowe strony błędów.