【发布时间】:2011-03-08 12:18:35
【问题描述】:
好的,所以我被这个问题难住了。我已经看到了很多本应解决此问题的方法,但我没有得到可以满足我要求的解决方案。
我正在使用 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)
我想阻止这个异常被抛出。我正在使用自定义错误并且它们工作正常,因为应用程序将发送到我的自定义 404 错误页面。但是,仍然会记录异常。
我有装饰所有控制器的[HandleError] 属性。这可能吗?如果是这样,我将不胜感激。
我尝试过设置final route that redirects,但无论出于何种原因,它都匹配之前的路由。我尝试使用httpModule,并清除Global.asax 文件的Application_Error 事件。没有什么能阻止例外。
再次感谢您的帮助!
【问题讨论】:
-
被记录有什么不好?例如,默认情况下,常规 404 也会登录到 Apache。
-
这不是日志记录,而是我试图压制的异常。我想要一个 404 错误,因为它应该是 404。但是我的理想情况是让 .NET customErrors 抛出 404 并且不会抛出异常。
标签: .net asp.net-mvc-2 httpexception