亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在Web Api項目中配置autofac

無法在Web Api項目中配置autofac

C#
弒天下 2023-06-25 13:52:08
我面臨著一個奇怪的問題,在過去的兩天里一直讓我感到困惑。由于我研究并嘗試了不同的解決方案,但尚未解決。Autofac 用作 DI 容器。該解決方案包含多個項目,包括 ASP.NET MVC 5 和 Web API。我們無法在 API 項目中配置和注冊 Autofac,而它在 Web 項目上正常工作。我嘗試了幾種解決方案,但沒有一個有效。我面臨著&ldquo;?嘗試創建'OperationController'類型的控制器時發生錯誤。確??刂破骶哂袩o參數公共構造函數&rdquo;的錯誤。下面提供了代碼啟動.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));


查看完整回答
反對 回復 2023-06-25
  • 1 回答
  • 0 關注
  • 185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號