我想在 JwtTokenValidated 事件处理程序上使用生活方式 PerWebRequest 注册一个类的现有实例。我正在使用 ASP.NET Core OWIN。我正在使用 AspNetBoilerplate。
问问题
646 次
1 回答
3
您不能使用特定的生活方式注册现有实例:
⚠注册实例忽略生活方式:当您注册现有实例时,即使您指定了生活方式,它也会被忽略。注册实例也会为您设置实现类型,因此如果您尝试手动执行此操作,则会引发异常。
你可以注册一个相当于PerWebRequest
生活方式的类型:
IocManager.IocContainer.Register(Component.For<TestService>()
.LifestyleCustom<MsScopedLifestyleManager>());
TestService
然后在您的事件处理程序中注入(或解析) :
public MyEventHandler(TestService testService)
{
// ...
}
替代方案:dotnet core web 应用程序中的 Castle Windsor 生活方式
ASP.NET Core 有自己的“范围”生命周期,即“每个请求”。查看它的文档:https ://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
使用示例:
services.AddScoped<ICharacterRepository, CharacterRepository>();
你应该在课堂上
ConfigureServices
的方法里面做。Startup
于 2018-04-02T12:11:14.740 回答