我正在使用 MVC 3 并在应用程序启动时使用以下代码...
UnityContainer container = new UnityContainer();
new UnityMappings(container);
DependencyResolver.SetResolver(new UnityServiceLocator(container));
现在,当应用程序运行时,我收到以下错误(但只是有时)...
有趣的是,如果我继续 Web 请求,则该网站可以正常工作。
有任何想法吗?当这一切正常时,我看不出我在做什么与以前不同。
干杯,伊恩。
最佳答案
MVC3 从 DependencyResolver
请求的不仅仅是 Controller 。对于大多数情况,MVC3 会回退到默认实现,以防 DependencyResolver 不返回实例。
在您的情况下,它请求您的 IoC 容器未知的 IControllerFactory
并抛出一个异常,该异常被 UnityServiceLocator
实现捕获并返回 null。 MVC 然后回退到默认 Controller 工厂。
与其他 IoC 容器不同,Unity 不提供可选的 TryResolve
,因此不支持 DependencyResolver
的正确无异常实现。
关于asp.net - 在 MVC 3 中使用 DependencyResolver 进行 Controller 实例化时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8151536/