Ich versuche, IdentityServer3 in ein vorhandenes Projekt zu implementieren, das Autofac verwendet. Das Problem, das ich über gekommen bin, ist, dass, wenn ich meine benutzerdefinierten Dienste einrichten, wenn ich mein Projekt laufen und ich versuche, diesen Fehler zu authentifizieren erhalten:IdentityServer3 mit Autofac
"An error occurred when trying to create a controller of type 'TokenEndpointController'. Make sure that the controller has a parameterless public constructor."
Jetzt weiß ich, das ist ein allgemeiner Autofac Fehler, wenn ein Dienst hat nicht richtig eingerichtet. Der Fehler stöhnt eigentlich über meine Gewohnheit Userservice besagt:
None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Business.IdentityServer.IdentityServerUserService' can be invoked with the available services and parameters: Cannot resolve parameter 'Business.Providers.IUserProvider userProvider' of constructor 'Void .ctor(Business.Providers.IUserProvider)'.
Jetzt schon hatte ich einen UserProvider, bevor ich mit IdentityServer3 gestartet und es wurde in Autofac wie folgt aufgebaut:
builder.RegisterType<DatabaseContext>().As<DbContext>().InstancePerDependency();
builder.RegisterType<UserProvider>().As<IUserProvider>().InstancePerDependency();
Das funktionierte vorher, also weiß ich, dass der UserProvider tatsächlich alle Abhängigkeiten hat.
sieht Mein Userservice wie folgt aus:
public class IdentityServerUserService : UserServiceBase
{
private readonly IUserProvider _userProvider;
public IdentityServerUserService(IUserProvider userProvider)
{
_userProvider = userProvider;
}
public override async Task AuthenticateLocalAsync(LocalAuthenticationContext context)
{
var user = await _userProvider.FindAsync(context.UserName, context.Password);
if (user != null && !user.Disabled)
{
// Get the UserClaims
// Add the user to our context
context.AuthenticateResult = new AuthenticateResult(user.Id, user.UserName, new List<Claim>());
}
}
}
Wer weiß, wie ich dieses Problem beheben kann?