我面臨著一個奇怪的問題,在過去的兩天里一直讓我感到困惑。由于我研究并嘗試了不同的解決方案,但尚未解決。Autofac 用作 DI 容器。該解決方案包含多個項目,包括 ASP.NET MVC 5 和 Web API。我們無法在 API 項目中配置和注冊 Autofac,而它在 Web 項目上正常工作。我嘗試了幾種解決方案,但沒有一個有效。我面臨著“?嘗試創建'OperationController'類型的控制器時發生錯誤。確??刂破骶哂袩o參數公共構造函數”的錯誤。下面提供了代碼啟動.cspublic void Configuration(IAppBuilder app)? ? ? ? {? ? ? ? ? ? var httpConfig = new HttpConfiguration();? ? ? ? ? ? ConfigureOAuth(app);? ? ? ? ? ? WebApiConfig.Register(httpConfig);? ? ? ? ? ? app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);? ? ? ? ? ? RegisterMappers();? ? ? ? ? ? var builder = new ContainerBuilder();? ? ? ? ? ? //builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();? ? ? ? ? ? builder.RegisterApiControllers(typeof(OperationController).Assembly).PropertiesAutowired();? ? ? ? ? ? builder.RegisterAssemblyTypes(Assembly.Load("PSMS.Repository"))? ? ? ? ? ? ? ? .Where(t => t.Name.EndsWith("Repository"))? ? ? ? ? ? ? ? .AsImplementedInterfaces()? ? ? ? ? ? ? ? .InstancePerLifetimeScope();? ? ? ? ? ? builder.RegisterType<PsmsDbContext>().InstancePerRequest();? ? ? ? ? ? builder.RegisterType<TransactionDbContext>().InstancePerRequest();? ? ? ? ? ? builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency();? ? ? ? ? ? var container = builder.Build();? ? ? ? ? ? DependencyResolver.SetResolver(new AutofacDependencyResolver(container));? ? ? ? ? ? GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);? ? ? ? ? ? app.UseWebApi(httpConfig);? ? ? ? }我再次重復一遍,相同的配置適用于 ASP.NET MVC 項目。
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
您使用的是 OWIN,而不是經典的 Web API 設置。根據文檔:
OWIN 集成中的一個常見錯誤是使用
GlobalConfiguration.Configuration
.?在 OWIN 中,您從頭開始創建配置。GlobalConfiguration.Configuration
使用 OWIN 集成時,您不應在任何地方引用。
切換這個:
GlobalConfiguration.Configuration.DependencyResolver?=?new?AutofacWebApiDependencyResolver(container);
到
httpConfig.DependencyResolver?=?new?AutofacWebApiDependencyResolver(container);
另外,不確定為什么要設置 MVC 依賴解析器。對于 Web API,您不需要:
DependencyResolver.SetResolver(new?AutofacDependencyResolver(container));
- 1 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消