.NET Core从Startup.cs重定向到自定义错误页面

时间:2019-06-24 09:37:37

标签: c# asp.net asp.net-mvc asp.net-core

我创建了错误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 个答案:

答案 0 :(得分:1)

首先,您可以使用类似{p>

if .. else

第二,请确保在请求处理中间件(例如,静态文件中间件和MVC中间件)之前先调用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"); } }); 中间件。

我建议您使用UseStatusCodePagesWithRedirect(或) UseStatusCodePages代替显式重定向