2012-09-26 51 views
1

我不知道为什么Unity没有注入或者忽略了我的构造函数中有参数的事实。我看到了这个post,但它更多地谈到了NinJect,但是让我相信也许Unity和Vs2012也有类似的问题。我知道Unity正在工作,因为在我的Application_Start代码中,在统一注册之后,我从统一中解析了一个接口并取回所有需要的对象。我只是不知道为什么我的控制器的参数构造函数被忽略。我也统一注册控制器。当我尝试击中该控制器时,出现No parameterless constructor defined for this object.错误。MVC4和“为此对象定义的无参数构造函数”。错误使用Unity来注入依赖关系?

我很好奇,如果有人遇到了同样的问题。

+1

你在说什么“控制器”?那是'System.Web.Mvc.Controller'还是'System.Web.Http.ApiController'?你目前的注册是什么?你如何注册你的'IDependencyResolver'? – Steven

+1

没有任何代码,似乎很难帮助你... – Cybermaxs

+0

@Steven,关于我是如何注册IDependencyResolver的问题让我觉得,因为我必须在使用ApiController注册我的解析器时使用IDependencyScope。我正在使用标准的控制器。所以,注册它与SetResolver()工作。谢谢! – DDiVita

回答

2

我必须给道具Steven,因为他引导我朝着正确的方向前进,但基本上,我使用的方法是使用ApiController注册解析器,而不是使用SetResolver方法向标准控制器注册。

+4

谁是你的爸爸? :p – Steven

0

我有同样的问题。我安装了Unity,然后安装了Unity.Mvc4。我卸载了所有与Unity相关的内容,并且只重新安装了Unity.Mvc4,并且所有内容都按照所宣传的那样工作。

0

对于Unity中的这个错误,转到Global.asax并编写下面的代码。 初始化引导程序。

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     Bootstrapper.Initialise(); 





    } 
相关问题