MVC属性路由和CustomError页面?

时间:2017-04-23 21:35:48

标签: asp.net-mvc-5 asp.net-mvc-routing custom-error-handling

使用属性路由在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页面?

0 个答案:

没有答案