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 – 淘汰赛和全球化
 
