使用 OWIN 启动类时,如何在注册依赖项后释放我的温莎城堡容器



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

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

或者,您可以查看该方法是如何实现的,并制作自己的实现方式。

最新更新