【发布时间】:2015-09-08 15:34:48
【问题描述】:
我正在使用 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 块。
localhost/All-Userabc
我错过了什么吗?
我也尝试过Install-Package NotFoundMvc,但这不起作用并出现异常“无效操作异常”
【问题讨论】:
-
您可以在 web.config 中设置 url 在发生 404 时重定向以代替 erro.htm
-
@EhsanSajjad:感谢您的回复。我已经试过了。你能把缺少的步骤给我吗?
-
您的控制器没有抛出异常,那么您为什么希望您的异常过滤器启动?
-
@BenRobinson:控制器和它们的动作方法都没有触发。最后我得到了 404。
标签: c# asp.net-mvc-3 asp.net-mvc-4 c#-4.0