1

Aşağıdaki kodları okuyun: http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/ Ama bu örnek DI için Unity kullanmış, ancak ID için Autofac kullanmıştım.Bulunan kurucuların hiçbiri, mevcut servisler ve parametrelerle çalıştırılamaz. Autofac

None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'App.Front.Controllers.HomeController' can be invoked with the available services and parameters: Cannot resolve parameter 'Microsoft.AspNet.Identity.UserManager 2[IdentityStore.IdentityUser,System.Guid] userManager' of constructor 'Void .ctor(Microsoft.AspNet.Identity.UserManager 2[IdentityStore.IdentityUser,System.Guid])'.

Kodum:

public class IdentityModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     //var dbContextParameter = new ResolvedParameter((pi, ctx) => pi.ParameterType == typeof(DbContext), 
     //            (pi, ctx) => ctx.Resolve<AppContext>()); 
     builder.RegisterType<UserStore>().As<IUserStore<IdentityUser, Guid>>().InstancePerLifetimeScope(); 
     builder.RegisterType<RoleStore>().InstancePerLifetimeScope(); 
    } 
} 

ve

private static void SetAutofacContainer() 
{ 
    var builder = new ContainerBuilder(); 
    var mainModules = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(p => p.ManifestModule.Name.StartsWith("App.")).ToArray(); 
    builder.RegisterControllers(mainModules); 
    builder.RegisterAssemblyModules(mainModules); 

    builder.RegisterFilterProvider(); 
    builder.RegisterSource(new ViewRegistrationSource()); 

    builder.RegisterModule(new EFModule()); 
    builder.RegisterModule(new RepositoryModule()); 
    builder.RegisterModule(new IdentityModule()); 
    builder.RegisterModule(new ServiceModule()); 
    var container = builder.Build(); 
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 

} 
proje i aşağıdaki hata var

Herhangi biri bana yardım etsin!

+0

Kimlik özelliğini AutoFac üzerinden ayarlamak için kullandığınız tüm modülleri gerçekten kullanabilirim. Nedense benim uygulamam aynı sorunu yaşıyor, ancak AutoFac hakkında neredeyse hiçbir şey bilmiyorum; özellikle nasıl kurulur. –

cevap

1

hata mesajı onun Microsoft.AspNet.Identity.UserManager<IdentityStore.IdentityUser,System.Guid> userManager parametreyi bulamadığından AutofacHomeController bir örneğini oluşturmak mümkün değil söyler.

Bu türün kayıtlı olmadığı anlaşılıyor. Bu hatayı çözmek için bir UserManager<IdentityUser, Guid> kayıt olmanız gerekmektedir. Bunu IdentityModule sınıfında yapabilirsiniz:

builder.RegisterType<UserManager<IdentityUser, Guid>>() 
     .As<UserManager<IdentityUser, Guid>>() 
     .InstancePerRequest(); 
+0

Yardımınız için teşekkürler, kodum şimdi çalışıyor, ama bu örnekte, kodunu kullanıyorum kodunun özel UserStore sınıfı, eğer kodumu kullanıyorsam, projem şimdi çalışıyor, ancak kullanıcı oluşturup kullanıcı adıma girdiğimde hatam var: InvalidOperationException: UserId bulunamadı.] Benim kodum Signin var identity = beklemek _userManager.CreateIdentityAsync (kullanıcı, DefaultAuthenticationTypes.ApplicationCookie); –

+0

@ TrườngSơn Anladığımdan emin değilim. Sorunuzu düzenleyebilir ve sorununuzu açıklayabilir misiniz? –

+0

Aynı soruna girdim, ancak zaten AutoFac içeren ve OP'nin desenini kullanmayan MVC HTML5 şablonunu kullanmam nedeniyle karmaşıklaşıyor. @CyrilDurand çözümünü dahil etmeye çalıştığımda işe yaramıyor. Tamamen yeni DI, tamamen kayboldu. –