asp.net-mvc – 如何在ASP.NET MVC控制器工厂中处理异常
我有一个带有自定义StructureMap控制器工厂的ASP.NET MVC 2应用程序来处理我的控制器的依赖注入:
public class StructureMapControllerFactory : DefaultControllerFactory { public override IController CreateController(RequestContext context,string controllerName) { Type controllerType = base.GetControllerType(context,controllerName); return ObjectFactory.GetInstance(controllerType) as IController; } } 我想知道如何在这个控制器工厂中处理异常,以便它们可以像在具有HandleError属性的控制器中一样重定向到?/ Views / Shared / Error.aspx.尽管将CustomErrors属性设置为“On”,但目前异常不会执行此操作. 目前我可以使用像“?/ DoesNotExist / edit / 1”这样的URL生成这样的异常.使用默认路由: routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults ); MVC匹配此路由并将控制器名称“DoesNotExist”传递给我的控制器工厂. GetControllerType然后返回null并在对StructureMap的调用中导致空引用异常.然后我希望能够处理这个异常. 请注意,添加后续捕获所有路由将无法解决此问题 – MVC匹配默认路由. 我知道我可以通过在控制器的默认路由上设置约束来解决这个特殊问题,但问题是如何在工厂中使用普通的MVC~ / Views / Shared / Error.aspx. 请注意,我不希望答案要求将控制器工厂紧密耦合到特定的MVC应用程序.理想情况下,此工厂应位于不在同一解决方案中的引用程序集中. 解决方法
也许你可以调整
this controller factory来处理异常.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windbg程序调试系列2-内存泄露问题
- asp.net – 如何使用WebClient访问ASMX Web服务?
- ASP.NET核心中的Redis缓存
- asp.net-mvc – ASP.NET MVC – 本地化路由
- asp.net-mvc – 无法导出Kendo Grid中的隐藏列
- asp.net TextBox中的值和文本属性(值被Text覆盖)
- asp.net – 如何更改FileUpload控件(System.Web.UI.WebCont
- asp.net – IIS 8.5自定义404不适用于无扩展名网址
- asp.net-mvc – 使用Automapper返回IQueryable
- ASP.NET MVC 3使用子集合进行不显眼的jQuery客户端验证
- asp.net – Bind()还是Eval()自动使用HtmlEncode
- ASP.NET异步任务 – 如何使用Page.RegisterAsync
- asp.net – 估算Web应用程序峰值带宽需求的最准确
- entity-framework – IdentityServer 3 Asp.net身
- 如何为ASP.NET_SessionId cookie设置HttpOnly?
- asp.net-mvc-3 – ASP.net MVC ActionResult在从
- asp.net-mvc – 使用带有MVC3的plupload
- asp.net-mvc – 为什么ASP.NET在静态图像请求上形
- Asp.Net Web Api基于令牌的授权,没有OWIN和AspNe
- Asp.Net MVC – 重载动作方法