Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 这是MVC IDependencyResolver的预期行为吗?_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 这是MVC IDependencyResolver的预期行为吗?

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的实例(请参阅

我已经实现了一个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