asp.net-mvc – 无法使用Windsor Container将依赖项注入Asp.net
发布时间:2020-12-16 07:45:47 所属栏目:asp.Net 来源:网络整理
导读:我无法使用asp.net web api配置Windsor Container,尽管它与常规控制器(IController)配合良好. 我在同一个项目中有常规控制器和api控制器. 这是常规控制器的代码,工作正常: /// summary /// Controller Factory class for instantiating controllers using t
我无法使用asp.net web api配置Windsor Container,尽管它与常规控制器(IController)配合良好.
我在同一个项目中有常规控制器和api控制器. 这是常规控制器的代码,工作正常: /// <summary> /// Controller Factory class for instantiating controllers using the Windsor IoC container. /// </summary> public class WindsorControllerActivator : IControllerActivator { private readonly IWindsorContainer container; public WindsorControllerActivator(IWindsorContainer container) { this.container = container; } public IController Create(RequestContext requestContext,Type controllerType) { var controller = (IController)container.GetService(controllerType); return controller; } } 在global.asax.cs中 container.Register(Component.For<IWindsorContainer>().Instance(container)); container.Register(Component.For<IControllerActivator>().ImplementedBy<WindsorControllerActivator>()); 以下是有问题的代码: public class WindsorApiControllerActivator : IHttpControllerActivator { private readonly IWindsorContainer container; public WindsorApiControllerActivator(IWindsorContainer container) { this.container = container; } public IHttpController Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType) { var controller = (IHttpController)container.GetService(controllerType); return controller; } } 和安装人员: container.Register(Component.For<IHttpControllerActivator>().ImplementedBy<WindsorApiControllerActivator>()); 但是,我永远无法执行WindsorApiControllerActivator. 什么时候,我把调试器放在WindsorControllerActivator中它按预期工作,但对于WindsorApiControllerActivator它永远不会被执行. 你的帮助将不胜感激 解决方法
我在global.asax.cs中添加了以下代码,它的工作原理:)
_windsorContainer = new WindsorContainer(); _windsorContainer.Install(new EventSorbetInstaller()); DependencyResolver.SetResolver(new WindsorDependencyResolver(_windsorContainer)); ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(_windsorContainer)); RegisterFilterProviders(FilterProviders.Providers,_windsorContainer); var activator = _windsorContainer.Resolve<IHttpControllerActivator>(); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),activator); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – VS 2012中缺少“Browse With …”按钮
- asp.net – 密码和确认密码
- asp.net – e.CommandArgument for asp按钮不工作
- asp.net – IIS不下载胡须文件
- asp.net – ASP:ItemTemplate中的DropDownList:为什么允许
- 在两个应用程序中拆分ASP.NET应用程序 – 处理共享页面/用户
- C#获取某一路径下的所有文件名信息(包括子文件夹)
- asp.net 360通用防护代码,防止sql注入与xss跨站漏洞攻击
- asp.net – PayPal Express Checkout MVC C#示例代码
- asp.net-mvc-3 – 淘汰赛和全球化