Поиск…


Вступление

Каждый веб-сайт должен обрабатывать ошибки. Вы можете позволить своим пользователям увидеть 404 или 500 страниц ошибок, которые выкладывают IIS, или, используя Web.Config и простой контроллер, вы можете захватить эти ошибки и предоставить свои собственные страницы ошибок.

Основная настройка

В этом примере рассмотрим создание настраиваемой страницы ошибок для 404 Page Not Found и 500 Server Error. Вы можете расширить этот код, чтобы захватить любой код ошибки, в котором вы нуждаетесь.

Web.Config

Если вы используете IIS7 и выше, игнорируйте узел <CustomError.. и вместо этого используйте <httpErrors...

Добавьте в узел 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>

Это указывает сайту направить любые 404 ошибки в ~/error/notfound и любые 500 ошибок в ~/error/servererror . Он также сохранит ваш запрошенный URL (подумайте о переносе, а не перенаправляйте ), чтобы пользователь никогда не увидел URL страницы ~/error/...

Затем вам нужен новый контроллер Error поэтому ...

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();
    }

} 

Ключевым моментом здесь является Response.TrySkipIisCustomErrors = true; , Это приведет к обходу IIS и приведет к прокрутке страницы ошибок.

Наконец, создайте соответствующие NotFound и ServerError Views и ServerError их, чтобы все было хорошо и без проблем с дизайном вашего сайта.

Привет, оригинальные страницы ошибок.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow