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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow