.NET Core перенаправить на пользовательские страницы ошибок из Startup.cs - PullRequest
1 голос
/ 24 июня 2019

У меня есть ошибка 400 и 404 страниц, которые я создал, и хочу использовать ее для своего приложения.Я заявил об этом в своем файле Startup.cs:

app.UseStatusCodePages(async context => {
    if(context.HttpContext.Response.StatusCode == 400)
    {
        context.HttpContext.Response.Redirect("~/Views/Shared/Errors/AccessDenied.cshtml");
    }
});
app.UseStatusCodePages(async context => {
    if (context.HttpContext.Response.StatusCode == 404)
    {
        context.HttpContext.Response.Redirect("~/Views/Shared/Errors/NotFound.cshtml");
    }
});

Это правильно?Когда я его тестировал, меня все равно перенаправляли обратно на стандартную страницу с ошибкой ядра .net. Я что-то упустил?

1 Ответ

1 голос
/ 24 июня 2019

Во-первых, вы можете комбинировать оба, используя if .. else конструкцию, такую ​​как

app.UseStatusCodePages(async context => {
    if(context.HttpContext.Response.StatusCode == 400)
    {
        context.HttpContext.Response.Redirect("~/Views/Shared/Errors/AccessDenied.cshtml");
    }
    else if (context.HttpContext.Response.StatusCode == 404)
    {
        context.HttpContext.Response.Redirect("~/Views/Shared/Errors/NotFound.cshtml");
    }
});

Во-вторых, убедитесь, что вы вызываете UseStatusCodePages middleware, прежде чем обрабатывать промежуточное ПО (например, Static File Middleware и MVC).Промежуточное программное обеспечение).

Я бы предложил вам использовать либо UseStatusCodePagesWithRedirect (ИЛИ) UseStatusCodePagesWithReExecute вместо прямого перенаправления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...