1

У меня возникали проблемы, когда мой контейнер не вызывался при регистрации в моем global.asax, поэтому я подумал, что это может быть связано с тем, что теперь я использую класс запуска OWIN. Теперь я перенесла экземпляр контейнера в этот класс. Я задаюсь вопросом, является ли целесообразным сделать:При использовании класса запуска OWIN, как я могу избавиться от контейнера Castle Windsor после регистрации моих зависимостей?

[assembly: OwinStartup(typeof(Startup))] 
namespace Namespace.WebApi 

public class Startup : IDisposable 
{ 
    private readonly WindsorContainer _Container; 
    public Startup() 
    { 
     _Container = new WindsorContainer(); 
     _Container.Install(FromAssembly.Named("Namespace.WebApi.Installers")); 
    } 

    public void Configuration(IAppBuilder app) 
    { 
     HttpConfiguration config = new HttpConfiguration(); 
     config.Services.Replace(typeof(IHttpControllerActivator), 
      new WindsorHttpControllerActivator(_Container)); 
     /// other configuration 
    } 

    public void Dispose() 
    { 
     _Container.Dispose(); 
    } 
} 

ответ

2

Вы можете включить NuGet пакет Owino и использовать RegisterForDisposal расширение, как это:

public void Configuration(IAppBuilder app) 
{ 
    /// (...) 

    app.RegisterForDisposal(_Container); 
} 

или вы можете посмотреть на how the method is implemented и сделать свой собственный реализация.

+0

Работал лечить! Очень предпочитают такой подход, чем создание всего startup.cs одноразового использования – Braydie

 Смежные вопросы

  • Нет связанных вопросов^_^