【问题标题】:How to make use of Castle.MicroKernel.Registration.Lifestyle.PerWebRequest within Abp?如何在 Abp 中使用 Castle.MicroKernel.Registration.Lifestyle.PerWebRequest?
【发布时间】:2018-04-02 10:43:35
【问题描述】:

我想在 JwtTokenValidated 事件处理程序上使用生活方式 PerWebRequest 注册一个现有的类实例。我正在使用 ASP.NET Core OWIN。我正在使用 AspNetBoilerplate。

【问题讨论】:

    标签: aspnetboilerplate asp.net-boilerplate


    【解决方案1】:

    你不能register an existing instance使用特定的生活方式:

    注册实例会忽略生活方式:当您注册现有实例时,即使您指定了生活方式,它也会被忽略。注册实例也会为你设置实现类型,所以如果你手动尝试,会抛出异常。

    你可以注册一个相当于PerWebRequest Lifestyle的类型:

    IocManager.IocContainer.Register(Component.For<TestService>()
        .LifestyleCustom<MsScopedLifestyleManager>());
    

    然后在您的事件处理程序中注入(或解析)TestService

    public MyEventHandler(TestService testService)
    {
        // ...
    }
    

    替代:Castle Windsor lifestyle in dotnet core web application

    ASP.NET Core 有自己的“范围”生命周期,即“每个请求”。查看它的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection

    使用示例:

    services.AddScoped<ICharacterRepository, CharacterRepository>();
    

    您应该在 Startup 类的 ConfigureServices 方法中执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多