c# - 使用 OWIN 启动类时,如何在注册我的依赖项后处理我的 CaSTLe Windsor 容器?

标签 c# asp.net-web-api dependency-injection owin castle-windsor

我遇到了问题,即在我的 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);
}

或者你可以看看how the method is implemented并自行实现。

关于c# - 使用 OWIN 启动类时,如何在注册我的依赖项后处理我的 CaSTLe Windsor 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41944879/

相关文章:

c# - 尝试 Catch 不使用异步 webapi

c# - 如何构造函数注入(inject)仅在运行时已知的字符串? (温莎城堡)

c# - 为什么 C# 中的异步调用需要这样声明,如果它们所在的方法已经用 'async' 关键字声明了?

c# - "Fold"LINQ 扩展方法在哪里?

c# - .Net Framework dll 不适用于 .Net Standard 项目

c# - 避免特定方法的 CamelCasePropertyNamesContractResolver

java - 如何在一个类中@Inject两个相似的实现?

javascript - 依赖关系 在 Angular 中将空模块注入(inject)到 Controller 中

c# - 如果我们直接将新对象值赋给旧对象,为什么 Linq to sql 无法跟踪更新信息?

c# - 如何使用此 IMAP 库发送电子邮件