使用 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 并自行实施。
我遇到了问题,即在我的 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 并自行实施。