gpt4 book ai didi

.net - 停止为不存在的 Controller 抛出异常

转载 作者:行者123 更新时间:2023-12-04 04:13:53 24 4
gpt4 key购买 nike

好的,所以我被这个问题难住了。我已经看到很多应该解决此问题的方法,但是我没有得到可以满足我的要求的解决方案。

我正在使用 ELMAH 来记录异常,并且当 URL 具有无效 Controller 或正确的 Controller 和无效操作时,我会收到此异常。

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]装饰所有 Controller 的属性。这可能吗?如果是这样,我将不胜感激。

我试过了,设置一个 final route that redirects ,但无论出于何种原因,它都会匹配之前的路线。我曾尝试使用 httpModule ,并在 Application_Error 中清算 Global.asax事件文件。没有什么能阻止这些异常(exception)。

再次感谢任何帮助!

最佳答案

创建一个RouteConstraint,检查 Controller 是否存在(实际上,在开始时扫描所有可能的 Controller 并缓存它,你知道我的意思)
并将其添加到您的标准路线。

所以,当你向一个错误的 Controller 发出请求时,它不会被正常的路由接受。
但后来被catchall -> 404路线接受了......

关于.net - 停止为不存在的 Controller 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com