我正在使用ASP.NET CoreMVC3.0API项目。我使用的是Microsoft.AspNetCore.Identity
v3.0
在Startup.cs
中,在ConfigureServices
方法中,当我键入下面的内容并运行应用程序时,会得到一个异常:
var builder = services.AddIdentityCore<AppUser>();
var identityBuilder = new IdentityBuilder(builder.UserType, builder.Services);
identityBuilder.AddEntityFrameworkStores<DataContext>();
identityBuilder.AddSignInManager<SignInManager<AppUser>>();
AppUser
类如下所示:
using Microsoft.AspNetCore.Identity;
namespace Domain
{
public class AppUser : IdentityUser
{
public string DisplayName { get; set; }
}
}
我得到的例外是:
未处理异常。Microsoft.AspNetCore.Identity.ISecurityStampValidator :一些服务无法构造(在验证服务描述符'ServiceType: System.AggregateException生命期:作用域ImplementationType: Microsoft.AspNetCore.Identity.SecurityStampValidator
1[Domain.AppUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Authentication.ISystemClock' while attempting to activate 'Microsoft.AspNetCore.Identity.SecurityStampValidator
1Domain.AppUser'.)时出错)(验证服务描述符‘Microsoft.AspNetCore.Identity.ITwoFactorSecurityStampValidator : Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator1[Domain.AppUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Authentication.ISystemClock' while attempting to activate 'Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator
1Domain.AppUser'.)生命周期:作用域ImplementationType: Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator1[Domain.AppUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Authentication.ISystemClock' while attempting to activate 'Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator
1Domain.AppUser’.)时出错
验证服务描述符‘Microsoft.AspNetCore.Identity.ISecurityStampValidator :System.InvalidOperationException生命期:作用域ImplementationType: Microsoft.AspNetCore.Identity.SecurityStampValidator1[Domain.AppUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Authentication.ISystemClock' while attempting to activate 'Microsoft.AspNetCore.Identity.SecurityStampValidator
1Domain.AppUser'.时出错
'Microsoft.AspNetCore.Authentication.ISystemClock‘:当试图激活'Microsoft.AspNetCore.Identity.SecurityStampValidator1[Domain.AppUser]'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor) --- End of inner exception stack trace --- at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor) at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(IEnumerable
1 serviceDescriptors、ServiceProviderOptions选项时,无法解析System.InvalidOperationException类型的服务)
-内部异常堆栈跟踪结束
( Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(IEnumerable1 serviceDescriptors, ServiceProviderOptions options) at Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(IServiceCollection services, ServiceProviderOptions options) at Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateServiceProvider(IServiceCollection containerBuilder) at Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter
1.CreateServiceProvider(Object containerBuilder) at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at Api.Program.Main(String[] args) in C:\Projects\XXXXXXXX\api\Program.cs:line 19 ->(内部异常#1) System.InvalidOperationException: Error,同时验证服务描述符'ServiceType: Microsoft.AspNetCore.IdentityMicrosoft.AspNetCore.Identity.TwoFactorSecurityStampValidator1[Domain.AppUser]': Unable to resolve service for type 'Microsoft.AspNetCore.Authentication.ISystemClock' while attempting to activate 'Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator
1Domain.AppUser'.:.ITwoFactorSecurityStampValidator生命周期:作用域ImplementationType:
知道我做错了什么吗?
发布于 2020-12-30 20:08:06
要解决这个问题,在ConfigurationServices
方法中的Startup.cs
中,在下面的代码块之后添加services.AddAuthentication();
:
var builder = services.AddIdentityCore<AppUser>();
var identityBuilder = new IdentityBuilder(builder.UserType, builder.Services);
identityBuilder.AddEntityFrameworkStores<DataContext>();
identityBuilder.AddSignInManager<SignInManager<AppUser>>();
对于任何跟随Neil课程的人来说,用.Net核心构建一个应用程序并做出反应的完整指南,这是他稍后提供的解决方案。
https://stackoverflow.com/questions/58630074
复制相似问题