Asp.net-Mvc

是否可以將 Autofac 配置為與 ASP.NET MVC 和 ASP.NET Web Api 一起使用

  • July 14, 2012

是否可以將 Autofac 配置為與 ASP .NET MVC 和 ASP .NET Web Api 一起使用。我知道依賴解析器是不同的。但是當使用記錄的方法時,我只能設置一個全域解析器。

// Set the dependency resolver implementation.
GlobalConfiguration.Configuration.DependencyResolver = resolver;

這種方法是壞主意嗎?我應該將我的解決方案分成兩個項目並分別處理每個項目的依賴注入嗎?

當然可以將 Autofac 配置為同時使用 MVC 和 Web API。預計這將是一種非常常見的情況。有兩種獨立的依賴解析器實現,因為 MVC 和 Web API 可以相互獨立地使用。這同樣適用於 Autofac 集成。

在同一個應用程序中同時使用 MVC 和 Web API 時,每個都需要自己的依賴解析器,儘管它們可以與容器的相同實例一起提供。

var builder = new ContainerBuilder();

// Add your registrations

var container = builder.Build();

// Set the dependency resolver for Web API.
var webApiResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

// Set the dependency resolver for MVC.
var mvcResolver = new AutofacDependencyResolver(container);
DependencyResolver.SetResolver(mvcResolver);

也可以在兩者之間共享註冊,因為InstancePerApiRequestInstancePerHttpRequest生命週期範圍現在共享相同的標籤。

請注意,為 Web API 和 MVC 設置依賴解析器的機制是不同的。Web API 使用GlobalConfiguration.Configuration.DependencyResolver和 MVC 使用DependencyResolver.SetResolver.

引用自:https://stackoverflow.com/questions/11484904