如何在Abp中使用Castle.MicroKernel.Registration.Lifestyle.PerWebRequest?

时间:2018-04-02 10:43:35

标签: aspnetboilerplate asp.net-boilerplate

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

1 个答案:

答案 0 :(得分:3)

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

  

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

您可以注册一个等同于PerWebRequest生活方式的类型:

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

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

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

替代方案:Castle Windsor lifestyle in dotnet core web application

  

ASP.NET核心拥有它自己的范围&#39;生命周期,每个请求&#39;。查看它的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection

     

用法示例:

services.AddScoped<ICharacterRepository, CharacterRepository>();
     

您应该在ConfigureServices课程中的Startup方法内进行。