Keine IUserTokenProvider ist registriert bei der Verwendung von dependency injection
Bekam ich eine Fehlermeldung, wenn mein GeneratePasswordResetTokenAsync()
- Methode aufrufen. Ich konfigurierte autofac mit owin Identität.
Der Fehler ist :
Kein IUserTokenProvider ist registriert bei der Verwendung von dependency-injection -
In meinem sample.web
- Projekt gibt es eine AutofacConfig.cs
Datei, wo ich mich registrieren signinmanager
und usermanager
welches ich in sample.repository
Projekt.
AutofacConfig.cs
public class AutofacConfig
{
public static Autofac.IContainer RegisterDependencies()
{
var containerBuilder = new ContainerBuilder();
//REGISTER DEPENDENCIES
containerBuilder.RegisterType<SampleDataContext>()
.As<DbContext>()
.InstancePerDependency();
containerBuilder.RegisterType<UserStore<SampleUser>>()
.As<IUserStore<SampleUser>>()
.InstancePerRequest();
containerBuilder.RegisterType<ApplicationUserManager>()
.AsSelf()
.InstancePerRequest();
containerBuilder.RegisterType<ApplicationSignInManager>()
.AsSelf()
.InstancePerRequest();
containerBuilder.RegisterType<EmailService>();
containerBuilder.Register<IAuthenticationManager>(c => HttpContext.Current.GetOwinContext().Authentication)
.InstancePerRequest();
var container = containerBuilder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
return container;
}
}
ApplicationUserManager.cs
public class ApplicationUserManager : UserManager<SampleUser>
{
public ApplicationUserManager(IUserStore<SampleUser> store)
: base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<SampleUser>(context.Get<SampleDataContext>()));
//Configure validation logic for usernames
manager.UserValidator = new UserValidator<SampleUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
//Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 8,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
//Configure user lockout defaults
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
//Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user
//You can write your own provider and plug it in here.
manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<SampleUser>
{
MessageFormat = "Your security code is {0}"
});
manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<SampleUser>
{
Subject = "Security Code",
BodyFormat = "Your security code is {0}"
});
manager.EmailService = new EmailService();
manager.SmsService = new SmsService();
var provider = new DpapiDataProtectionProvider("Sample");
manager.UserTokenProvider = new DataProtectorTokenProvider<SampleUser>(
provider.Create("ASP.NET Identity"));
return manager;
}
}
- Sie noch nicht registriert
IUserTokenProvider
. Look at stackoverflow.com/questions/22629936/... zu sehen, wie sich eine
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen create () - Methode in ApplicationUserManager.cs-Klasse, und fügen Sie diesen code in ApplicationUserManager-Klasse einen Konstruktor.
ApplicationUserManager.cs
registrieren DataProtectionProvider in AutofacConfig.cs-Datei
Beheben ApplicationUSerManager Klasse starten.cs Klasse
habe gerade die Lösung von hier
es ist sehr hilfreich, Artikel