【发布时间】:2018-04-02 10:43:35
【问题描述】:
我想在 JwtTokenValidated 事件处理程序上使用生活方式 PerWebRequest 注册一个现有的类实例。我正在使用 ASP.NET Core OWIN。我正在使用 AspNetBoilerplate。
【问题讨论】:
标签: aspnetboilerplate asp.net-boilerplate
我想在 JwtTokenValidated 事件处理程序上使用生活方式 PerWebRequest 注册一个现有的类实例。我正在使用 ASP.NET Core OWIN。我正在使用 AspNetBoilerplate。
【问题讨论】:
标签: aspnetboilerplate asp.net-boilerplate
你不能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方法中执行此操作。
【讨论】: