当前位置: 首页 > 编程语言 > C#

如何使用Autofac解析混合WebAPI和MVC应用程序中的WebAPI控制器?分享

时间:2023-04-10 17:05:24 C#

如何在混合WebAPI和MVC应用程序中使用Autofac解析WebAPI控制器?您好,我有一个MVC应用程序,我已经为我的WebAPI定义了一些依赖项。公共类AutofacWebApiDependenceResolver:IDependencyResolver{privatereadonlyIComponentContextcontainer;publicAutofacWebApiDependenceResolver(IContainercontainer){if(container==null){thrownewArgumentNullException("container");{if(serviceType==null){thrownewArgumentNullException("serviceType");}varret=this.container.ResolveOptional(serviceType);返还;}publicIEnumerableGetServices(TypeserviceType){if(serviceType==null){thrownewArgumentNullException("serviceType");类型enumerableType=typeof(IEnumerable).MakeGenericType(serviceType);varret=(IEnumerable)this.container.ResolveOptional(enumerableType);返还;然后在我的引导程序类中,我在Application_Start中这样调用它:GlobalConfiguration.Configuration.DependencyResolver=newAutofacWebApiDependenceResolver((IContainer)container);当我调试代码时,我可以看到我的DependencyResolv呃,所有的服务都注册了,但是我仍然收到以下错误:发生错误。类型'WebApp.Controllers.AuthenticateController'没有默认构造函数这是我的控制器的代码:publicclassAuthenticateController:ApiController{私有只读IMemberShipProvider成员;私有只读IDataService数据服务;publicAuthenticateController(IMemberShipProvidermemberShip,IFormsAuthenticationServiceformsAuthenticationService,IDataServicedataService){this.memberShip=memberShip;简单的控制器工作正常。我建议使用MVC和WebApi在您的应用程序中执行以下操作。首先,您的项目需要参考以下内容。然后,在您的Autofac注册中,您需要为MVC和WebApi控制器进行以下注册以及您需要的任何其他注册。然后将Container连接到MVCDI和WebApiDI。varbuilder=newContainerBuilder();builder.RegisterControllers(Assembly.GetExecutingAssembly());//注册MVC控制器builder.RegisterApiControllers(Assembly.GetExecutingAssembly());//RegisterWebApiControllers//Registeranyothercomponentsrequiredbyyourcode....varcontainer=builder.Build();DependencyResolver.SetResolver(新的AutofacDependencyResolver(容器));//设置MVCDependencyResolverGlobalConfiguration.Configuration.DependencyResolver=newAutofacWebApiDependencyResolver((IContainer)container);//设置WebApiDependencyResolver我希望这会有所帮助。nemesv的指令会做builder.RegisterApiControllers(Assembly.GetExecutingAssembly())Callbuilder.Build()beforecallingbuilder.Build()以上是C#学习教程:HowtouseAutofactoparseWebAPIinahybridWebAPIandMVC应用程序控制器?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: