使用 OWIN 启动 class 时,如何在注册我的依赖项后处理我的 Castle Windsor 容器?

When using an OWIN startup class, how do I dispose of my Castle Windsor container after registering my dependencies?

我遇到了问题,即在我的 global.asax 中注册时我的容器没有被调用,所以我认为这可能是因为我现在正在使用 OWIN 启动 class。我现在已将容器的实例化移至此 class。我想知道这样做是否合适:

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

您可以包含 Owino NuGet 包并使用 RegisterForDisposal 扩展,如下所示:

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

    app.RegisterForDisposal(_Container);
}

或者您可以查看 how the method is implemented 并自行实施。