C# 尝试激活SecurityStampValidator时无法解析ISystemClock的服务
我尝试将标识添加到web API,但出现此错误 InvalidOperationException:无法解析类型>'Microsoft.AspNetCore.Authentication.ISystemClock'的服务 试图激活>'Microsoft.AspNetCore.Identity.SecurityStampValidator'1[WebAPI.Models.User>]'时 在Startup.cs中添加标识后,我在这里看到了C# 尝试激活SecurityStampValidator时无法解析ISystemClock的服务,c#,asp.net-core-webapi,asp.net-core-identity,C#,Asp.net Core Webapi,Asp.net Core Identity,我尝试将标识添加到web API,但出现此错误 InvalidOperationException:无法解析类型>'Microsoft.AspNetCore.Authentication.ISystemClock'的服务 试图激活>'Microsoft.AspNetCore.Identity.SecurityStampValidator'1[WebAPI.Models.User>]'时 在Startup.cs中添加标识后,我在这里看到了 services.AddIdentityCore<U
services.AddIdentityCore<User>(options => { });
new IdentityBuilder(typeof(User), typeof(IdentityRole), services)
.AddRoleManager<RoleManager<IdentityRole>>()
.AddSignInManager<SignInManager<User>>()
.AddEntityFrameworkStores<DataContext>();
app.UseAuthentication();
services.AddIdentityCore(选项=>{});
新的IdentityBuilder(typeof(用户)、typeof(IdentityRole)、服务)
.AddRoleManager()
.AddSignInManager()的名称
.AddEntityFrameworkStores();
app.UseAuthentication();
usermodel类为空。所有内容都加载到数据库中。
少了什么?感谢您的时间和帮助。ISystemClock通常在
AddAuthentication
呼叫中注册
或者,您可以调用AddDefaultIdentity
,后者反过来调用AddAuthentication
本身
建议您使用其中一种机制,而不是AddIdentityCore
。但是,如果出于某种原因需要调用AddIdentityCore
,则可以自己注册时钟:
services.TryAddSingleton<ISystemClock, SystemClock>();
services.TryAddSingleton();
尽管如此,您也可能会遇到上述方法处理的其他问题。另见
至于它是什么,ISystemClock
接口用于获取当前时间。SystemClock
实现从计算机获取实时数据(只需调用DateTimeOffset.UtcNow
)。然而,在测试中,这允许“假时钟”实现传入now的不同值,从而验证诸如闰日和其他时态业务逻辑之类的场景。这种模式通常被称为“虚拟时钟”或“模拟时钟”