我已经将autofac与MVC 3一起使用了一段时间,并且喜欢它。我最近将一个项目升级到了MVC 4,除了Web Api ApiControllers之外,其他所有功能似乎都可以正常工作。我收到以下异常。
An error occurred when trying to create a controller of type 'MyNamespace.Foo.CustomApiController'. Make sure that the controller has a parameterless public constructor.
在我看来,这似乎是通过autofac处理DI的问题。我是否缺少某些东西或作品中是否有任何东西。我知道,MVC4刚刚发布并且是beta版,所以我期望不高,但认为可能会丢失一些东西。
最佳答案
我已经在NuGet上发布了针对MVC 4和Web API的Beta版的Autofac集成软件包。集成将根据 Controller 请求(MVC Controller 或API Controller ,取决于集成)创建Autofac生存期范围。这意味着 Controller 及其依赖项将在每次调用结束时自动处理。这两个软件包可以在同一项目中并排安装。
MVC 4
https://nuget.org/packages/Autofac.Mvc4
http://alexmg.com/post/2012/03/09/Autofac-ASPNET-MVC-4-(Beta)-Integration.aspx
Web API
https://nuget.org/packages/Autofac.WebApi/
http://alexmg.com/post/2012/03/09/Autofac-ASPNET-Web-API-(Beta)-Integration.aspx
链接现已修复。
关于Autofac和ASP.NET Web API ApiController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9450282/