我创建了错误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核心错误页面。是否还缺少其他内容?
答案 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
代替显式重定向