在MVC Razor中实现404

时间:2015-09-08 15:34:49

标签: c# asp.net-mvc-3 asp.net-mvc-4 c#-4.0

我正在使用ASP.NET MVC 4.5.1 razor C#

我的Web.config配置了以下标签之一。

<customErrors mode="On" defaultRedirect="Error">
  <error statusCode="404" redirect="/Error.htm"/>
</customErrors>

我有一个课程可以捕获下面的所有异常。

public class Error : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
    }
}

我的基本控制器如下所示。

[Error]
public class BaseController : AsyncController
{

}

我的控制器操作方法如下所示

[HttpGet, Route("All-User"), LoginAuthentication, AdminAuthorization]
public async Task<ActionResult> AllUsers()
{
    var list = await _user.List();
    return View(list);
}

我的网址如下所示,效果很好

本地主机/全用户

当我执行下面的url时,我得到404但是没有执行Error类的catch块。

本地主机/全Userabc

我错过了什么吗?

我也试过Install-Package NotFoundMvc,但这不起作用并得到例外&#34;无效的操作例外&#34;

1 个答案:

答案 0 :(得分:0)

您的Error类不会被调用此URL,因为它继承了HandleErrorAttribute,只有当action方法抛出异常时才会调用它。在您的情况下,由于您的URL与任何路由都不匹配,因此不执行任何操作方法。

如果您希望代码执行404错误,请尝试使用此问题的默认路由示例 - ASP.NET MVC - Catch All Route And Default Route