我想在JwtTokenValidated事件处理程序上使用生活方式PerWebRequest注册类的现有实例。我正在使用ASP.NET Core OWIN。我正在使用AspNetBoilerplate。
答案 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
方法内进行。