C# 尝试激活SecurityStampValidator时无法解析ISystemClock的服务

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

我尝试将标识添加到web API,但出现此错误

InvalidOperationException:无法解析类型>'Microsoft.AspNetCore.Authentication.ISystemClock'的服务 试图激活>'Microsoft.AspNetCore.Identity.SecurityStampValidator'1[WebAPI.Models.User>]'时

在Startup.cs中添加标识后,我在这里看到了

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的不同值,从而验证诸如闰日和其他时态业务逻辑之类的场景。这种模式通常被称为“虚拟时钟”或“模拟时钟”