我遇到了在我的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);
}
或者,您可以查看该方法是如何实现的,并制作自己的实现方式。