Identity 2.0 및 Identity 2.0 샘플 보일러 플레이트를 사용하는 MVC 5 애플리케이션에서 Unity.Mvc5를 사용하여 Unity를 구성하려고 할 때 다음 예외가 발생합니다. 나는이 SO Configure Unity DI for ASP.NET Identity를 읽었으며 여전히 내가 무엇을 놓치고 있는지 명확하지 않습니다. 내가 여기서 뭘 잘못하고 있니?
현재 형식 인 System.Data.Common.DbConnection은 추상 클래스이며 생성 할 수 없습니다. 유형 매핑이 누락 되었습니까?
[ResolutionFailedException : 종속성 확인에 실패했습니다. 유형 = "myApp.Web.Controllers.AccountController", 이름 = "(none)". 해결 중에 예외가 발생했습니다.
예외 발생 당시 컨테이너는 다음과 같습니다.
myApp.Web.Controllers.AccountController, (none) 확인 myApp.Web.Controllers.AccountController (myApp.Web.Models.ApplicationUserManager userManager) 생성자의 "userManager"매개 변수 확인 myApp.Web.Models.ApplicationUserManager, (none) 확인 매개 변수 생성자 myApp.Web.Models.ApplicationUserManager (Microsoft.AspNet.Identity.IUserStore 1[[myApp.Web.DAL.Profiles.ApplicationUser, myApp.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] store) Resolving Microsoft.AspNet.Identity.EntityFramework.UserStore
1 [myApp.Web.DAL.Profiles.ApplicationUser], (none) 의 "저장소"(Microsoft.AspNet.Identity.IUserStore 에서 매핑 됨)1[myApp.Web.DAL.Profiles.ApplicationUser], (none)) Resolving parameter "context" of constructor Microsoft.AspNet.Identity.EntityFramework.UserStore
1 [[myApp.Web.DAL.Profiles.ApplicationUser, myApp.Web, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null]] (System.Data.Entity.DbContext context) System.Data.Entity.DbContext 해결 , (none) 생성자 System.Data.Entity.DbContext (System.Data.Common.DbConnection existingConnection, System.Data.Entity.Infrastructure.DbCompiledModel model, System.Boolean contextOwnsConnection)의 "existingConnection"매개 변수 해결 System.Data.Common 해결 .DbConnection, (없음)
내가 수정 한 계정 컨트롤러
public AccountController(ApplicationUserManager userManager)
{
_userManager = userManager;
}
private ApplicationUserManager _userManager;
내가 등록한 컨테이너
container.RegisterType<ApplicationUserManager>(new HierarchicalLifetimeManager());
container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());
해결책을 찾았지만 더 간단한 해결책이 있다고 생각합니다.
Entity Framework를 사용하고 있습니까? 따라서 응용 프로그램에는 거의 확실하게 상속 된 항목이 있습니다 DbContext
( 이 경우에서 상 IdentityContext<TUser>
속됨 DbContext
). 기본 템플릿에서는 ApplicationDbContext입니다.
컴포지션 루트에서 추가 할 수 있습니다 container.RegisterType<DbContext, ApplicationDbContext>(new HierarchicalLifetimeManager());
(애플리케이션 이름이 ApplicationDbContext가 아닌 경우 분명히 편집).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다