Csharp/C#教程:如何将Autofac与WepApi 2和Owin集成?分享


如何将Autofac与WepApi 2和Owin集成?

我正在使用此软件包将Autofac与我的WebApi Owin应用程序集成:

https://www.nuget.org/packages/Autofac.WebApi2.Owin

并关注这篇文章:

https://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); 

无论我如何旋转它,重新排列代码或其他任何东西,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); } 

我错过了什么?

谢谢

好,

我想到了。 Autofac Owin集成实际上创建了一个Owin liftimescope,它可以通过整个Owin管道获得,因此可用于中间件并将此lifetimescope扩展到HttpRequestMessage。 这是标有AutofacWebRequest标记的lifetimescope。

因此,所有以前的WebApi集成代码仍然需要在应用程序启动时执行。 我包括:

  var dependencyResolver = new AutofacWebApiDependencyResolver(container); config.DependencyResolver = dependencyResolver; 

但错过了:

 var builder = new ContainerBuilder(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest(); 

在EngineContext.Initialize方法中,该方法通过构建器执行所有注册。

在这里,您可以找到有关如何将Autofac与WebApi集成的更多信息,这显然也需要在Owin的情况下完成:

https://code.google.com/p/autofac/wiki/WebApiIntegration

我希望这很有用!

上述就是C#学习教程:如何将Autofac与WepApi 2和Owin集成?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009701.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐