我正在使用此软件包将Autofac与我的WebApi Owin应用程序集成:
https://www.nuget.org/packages/Autofac.WebApi2.Owin
并关注这篇文章:
http://alexmg.com/owin-support-for-the-web-api-2-and-mvc-5-integrations-in-autofac/
我在Startup.cs中的代码如下所示:
var config = new HttpConfiguration();
IContainer container = EngineContext.InitializeEngine();
var dependencyResolver = new AutofacWebApiDependencyResolver(container);
config.DependencyResolver = dependencyResolver;
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(config);
WebApiConfig.Register(config);
app.UseWebApi(config);
Run Code Online (Sandbox Code Playgroud)
无论我如何旋转它,重新排列代码或其他任何东西,Autofac都无法解决任何问题.在Owin之前,我的Global.asax方法运行得很好:
protected void Application_Start()
{
IContainer container = EngineContext.InitializeEngine();
var dependencyResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver;
GlobalConfiguration.Configure(WebApiConfig.Register);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢
我有一个使用Microsoft.AspNet.WebApi.OwinSelfHost的简单项目.这是一个Owin自托管WebApi 2项目.该项目非常类似于: -
https://github.com/attilah/AngularJSAuthentication
我唯一的区别是我的安全模块是在单独的程序集中(一切类似于上面的项目).我使用Autofac来解决我的依赖关系.
当没有Autofac时,这个项目有效.但是,一旦我尝试使用相应的安全模块和Autofac设置我的项目,我面临的是这个错误: -
Could not load file or assembly 'System.Web.Http, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)
我的配置非常受这个帖子的启发: -
依赖注入无法与Owin自托管Web Api 2和Autofac一起使用
此外,我发现其他人在努力解决Autofac的这种依赖性问题,并且能够通过重新安装Microsoft.AspNet.WebApi.WebHost来解决类似的问题:
在Web API 2和.NET 4.5.1迁移之后,GlobalConfiguration.Configure()不存在
但这对我不起作用我不知道为什么.我试过从头开始重新安装一切也没有帮助.除了Autofac在重新安装时还有几个权限问题这一事实.
有人有这个错误的经验吗?请帮忙.谢谢!