使用属性路由在MVC 5中实现404(例如)错误页面的最佳方法是什么?
我读过这篇文章:http://benfoster.io/blog/aspnet-mvc-custom-error-pages
对于简单的404重定向来说似乎有点牵强!
我有一个名为Notify的控制器:
[RoutePrefix("notify")]
public class NotifyController : Controller
{
[Route("not-found")]
public ActionResult NotFound()
{
return View();
}
}
在我的web.config中:
<customErrors mode="On" defaultRedirect="~/notify/error" xdt:Transform="Replace">
<error statusCode="404" redirect="~/notify/not-found"/>
</customErrors>
如果我输入一个狡猾的URL,我会得到未找到的页面,如下所示: https://www.mydomain.co.uk/notify/not-found?aspxerrorpath=/lkl
我链接的文章建议将以下内容添加到CustomErrors以删除aspxerrorpath:
redirectMode="ResponseRewrite"
然而,这打破了重定向。因此,如果我将其删除,它仍然会重定向但不会返回404状态。所以我将ActionResult更改为:
[Route("not-found")]
public ActionResult NotFound()
{
if (Response.StatusCode == 200)
Response.StatusCode = 404;
return View();
}
这会抛出404状态代码,但是给了我默认的404错误页面!
是否有推荐的方法使用属性路由处理MVC中的CustomErrors?或者我是否需要在链接中使用aspx页面?