Asp.net mvc 3 这是MVC IDependencyResolver的预期行为吗?
我已经实现了一个System.Web.Mvc.idependencysolver,它可以查找在Castle Windsor注册的服务。下面是我的GetService(类型serviceType)实现(对于MVC3 RC2) 这很有效,但我对在日志中看到的警告有一个疑问(我将所有异常记录为“Warn”-参见上面的代码): 这些都是观点。这是预期的行为吗?如果是,为什么要求依赖项解析程序查找视图?如果没有,我应该如何解决这个问题 请注意,我还没有注册IViewPageActivator的实例(请参阅下面的警告),它应该向框架发出信号,表明视图应该以默认方式解析。为什么我仍然通过依赖项解析器看到视图请求Asp.net mvc 3 这是MVC IDependencyResolver的预期行为吗?,asp.net-mvc-3,Asp.net Mvc 3,我已经实现了一个System.Web.Mvc.idependencysolver,它可以查找在Castle Windsor注册的服务。下面是我的GetService(类型serviceType)实现(对于MVC3 RC2) 这很有效,但我对在日志中看到的警告有一个疑问(我将所有异常记录为“Warn”-参见上面的代码): 这些都是观点。这是预期的行为吗?如果是,为什么要求依赖项解析程序查找视图?如果没有,我应该如何解决这个问题 请注意,我还没有注册IViewPageActivator的实例(请参阅
WARN Default [] - Could not resolve service-type IViewPageActivator via
WindsorDependencyResolver
MVC3中的IDependencyResolver可以解析视图以及其他类型。当您需要更改视图实现时(例如,当您对解决方案进行单元测试时),这可能非常有用。 详情如下: BuildManagerCompiledView中的逻辑 咨询依赖项解析程序, 使命感 GetSerivce(类型(IViewPageActivator)) 以及在需要时使用所提供的服务 目前如果没有 IViewPageActivator存在于 依赖解析程序,然后我们将询问 用于创建 通过调用 GetService(viewPageType)。如果 依赖项解析程序也无法 创建具体的视图页面类型,我们 最后回到MVC2 使用行为 Activator.CreateInstance来创建 查看页面类型
你好是的,我知道这一点-我在帖子中没有提到的是,我还没有向Windsor注册IViewPageActivator,因此当调用此类型时,我的DependencyResolver返回null,这应该向框架发出信号,它应该返回到解析视图的默认方式。这就是为什么我不理解为什么会看到这些解析视图的调用。请仔细阅读:如果依赖项解析程序中没有IViewPageActivator,那么我们将要求依赖项解析程序通过调用GetService(viewPageType)Ooops来创建具体的视图页类型。我太马虎了。好的-所以行为是预期的。现在,我不需要特殊的IViewPageActivator。我对默认的行为感到满意。我应该保持现状(并继续忽略未解析的视图)还是应该做其他事情?如果您完全确定应该忽略冲突解决程序中的
IView
实现,您可以忽略它。这将提高性能。打得好。谢谢你的帮助。
WARN Default [] - Could not resolve service-type Index_cshtml via
WindsorDependencyResolver
WARN Default [] - Could not resolve service-type RegistrationForm_cshtml via
WindsorDependencyResolver
WARN Default [] - Could not resolve service-type LoginForm_cshtml via
WindsorDependencyResolver
WARN Default [] - Could not resolve service-type IViewPageActivator via
WindsorDependencyResolver