我正在使用 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/

10-10 16:01