У меня есть проект WebApi с ODataController, и я пытаюсь добавить некоторую зависимость в MyController. Я следил за этим blogpost Марк Seemann.Веб-API, odata v4 и Castle Windsor
Рассмотрите приведенный ниже код.
Проблема заключается в том, что, когда это MyController создания, я получил исключение внутри WindsorCompositionRoot Создать метод на этой линии,
var controller = (IHttpController)this.container.Resolve(controllerType);
исключение типа «Castle.MicroKernel.ComponentNotFoundException» произошло в Castle.Windsor .dll, но не был обработан в пользовательском коде
Дополнительная информация: нет компонент для поддержки услуги System.Web.OData.MetadataController был найден
Любая идея, как это исправить? Спасибо.
Мой контроллер:
public class MyController : ODataController
{
private readonly DataLayer _db;
public PrepravyController(DataLayer db)
{
_db = db;
}
}
CompositonRoot:
public class WindsorCompositionRoot : IHttpControllerActivator
{
private readonly IWindsorContainer container;
public WindsorCompositionRoot(IWindsorContainer container)
{
this.container = container;
}
public IHttpController Create(
HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor,
Type controllerType)
{
var controller =
(IHttpController)this.container.Resolve(controllerType);
request.RegisterForDispose(
new Release(
() => this.container.Release(controller)));
return controller;
}
private class Release : IDisposable
{
private readonly Action release;
public Release(Action release)
{
this.release = release;
}
public void Dispose()
{
this.release();
}
}
}
Global asax:
var container = new WindsorContainer();
container.Install(new RepositoriesInstaller());
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), new WindsorCompositionRoot(container));
GlobalConfiguration.Configure(WebApiConfig.Register);
Вы уверены, что «controllerType» в то время, вы получите это ошибка типа MyController? – PatrickSteele