停止为不存在的控制器抛出异常

Dus*_*ine 9 .net httpexception asp.net-mvc-2

好的,所以我对这个问题很难过.我已经看到很多应该解决这个问题的事情,但是我没有得到满足我要求的解决方案.

我正在使用ELMAH来记录异常,并且当具有无效控制器的URL或适当的控制器和无效操作时,我会收到此异常.

System.Web.HttpException: The controller for path '/BadController' was not found or does not implement IController.
   at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
   at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
   at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

我想阻止这个异常被抛出.我正在使用自定义错误,它们工作正常,因为应用程序将发送到我的自定义404错误页面.但是,异常仍会被记录.

我有[HandleError]属性装饰所有控制器.这可能吗?如果是这样,我将不胜感激任何帮助.

我已经尝试过,设置一个重定向最终路由,但无论出于何种原因,它都匹配之前的路由.我试图使用httpModule,并在文件的情况Application_Error下清除Global.asax.没有什么能阻止这种例外.

再次感谢任何帮助!

Dus*_*ine 1

在对这个异常进行了大量的挖掘之后,可能没有正确地转达我的问题。根据这篇文章,答案是从 ELMAH 中排除这些例外情况。

默认情况下,ELMAH 记录每个未处理异常的详细信息,包括 404 和其他 HTTP 错误。您可以指示 ELMAH 使用错误过滤来忽略这些或其他类型的错误。