通常のコントローラー(IController)では正常に機能しますが、asp.netWebAPIを使用してWindsorContainerを構成できません。
同じプロジェクトに通常のコントローラーと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の場合は実行されません。
あなたの助けをいただければ幸いです