我尝试将身份添加到我的Web API,但是出现此错误


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


在Startup.cs中添加Identity之后,我在这里

services.AddIdentityCore<User>(options => { });
            new IdentityBuilder(typeof(User), typeof(IdentityRole), services)
                .AddRoleManager<RoleManager<IdentityRole>>()
                .AddSignInManager<SignInManager<User>>()
                .AddEntityFrameworkStores<DataContext>();

app.UseAuthentication();


usermodel类为空。一切都加载到数据库中。
缺什么?感谢您的宝贵时间和帮助。

最佳答案

ISystemClock通常在AddAuthentication调用中注册。 You can see it in the sources here.

或者,您可以改为调用AddDefaultIdentity,后者又调用AddAuthentication本身。 Sources here.

建议您使用这些机制之一,而不要使用AddIdentityCore。但是,如果由于某种原因需要调用AddIdentityCore,则可以自己注册时钟:

services.TryAddSingleton<ISystemClock, SystemClock>();


但是,您可能还会遇到其他事情,以注册上述方法要注意的事项。另请参见this question and its answer

至于它是什么-ISystemClock界面用于获取当前时间。 SystemClock实现从计算机获取实时信息(只需调用DateTimeOffset.UtcNow)。但是,在测试中,这允许“假时钟”实现传递不同的now值,从而验证场景(例如leap日)和其他临时业务逻辑。这种模式通常称为“虚拟时钟”或“模拟时钟”。

08-28 12:33