1

Ich hatte Probleme, wodurch mein Container nicht aufgerufen wurde, wenn er in meiner global.asax registriert war, also dachte ich, dass dies daran liegen könnte, dass ich jetzt eine OWIN-Startup-Klasse verwende. Ich habe die Instanziierung des Containers jetzt in diese Klasse verschoben. Ich frage mich, ob dies angemessen ist zu tun:Wie kann ich bei Verwendung einer OWIN-Startup-Klasse meinen Castle Windsor-Container entsorgen, nachdem ich meine Abhängigkeiten registriert habe?

[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(); 
    } 
} 

Antwort

2

Sie können die Owino NuGet Paket enthalten und verwenden Sie die RegisterForDisposal Erweiterung wie folgt aus:

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

    app.RegisterForDisposal(_Container); 
} 

oder Sie können bei how the method is implemented aussehen und machen sie ihre eigenen Implementierung.

+0

Arbeitete eine Belohnung! Viel lieber diesen Ansatz, als das ganze startup.cs wegwerfbar zu machen – Braydie

Verwandte Themen