我创建了错误 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 core 错误页面。我是否遗漏了其他内容?
最佳答案
首先,您可以使用 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");
}
});
其次,请确保在请求处理中间件(例如静态文件中间件和 MVC 中间件)之前调用 UseStatusCodePages
中间件。
我建议您使用 UseStatusCodePagesWithRedirect
(或者)
UseStatusCodePagesWithReExecute
而不是显式重定向
关于c# - .NET Core 从 Startup.cs 重定向到自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56733779/