2014-06-22 3 views
0

asp.net MVC5 웹 응용 프로그램 프로젝트에서 appicationDBContext를 자체 어셈블리로 이동하려고합니다. 나는 데이터 액세스 레이어에 대한 클래스 라이브러리를 만들고 aspnet.identity 어셈블리를 설치하기 위해 nuget을 사용해 보았습니다.자체 어셈블리에 aspnet.identity.entityframework를 분리하는 방법

이 기능을 사용할 수 없습니다. 나는 몇 가지 다른 예제를 시도했지만 이것을 수행하는 가장 좋은 방법은 확실하지 않습니다.

내가 코드 플렉스에 기본 예제를 만들었습니다 는 https://testdal.codeplex.com/

이 클래스 라이브러리 DAL에 대한 참조를 빈 mvc5 웹 사이트입니다. DAL에서 기본 샘플 웹 사이트의 모델과 참조 및 몇 가지 기본 테스트 코드를 사용하여 사용자를 등록하고 등록합니다.

Instance failure. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Instance failure. 

Source Error: 



Line 18: 
Line 19:    var user = new ApplicationUser() { UserName = "paul" }; 
Line 20:    var result = UserManager.Create(user, "123456"); 
Line 21: 
Line 22: 


Source File: c:\Users\paul\Documents\Visual Studio 2013\Projects\emptyWebsite\DAL\Register.cs Line: 20 

Stack Trace: 



[InvalidOperationException: Instance failure.] 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +414 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +78 
    System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +196 
    System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +146 
    System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +16 
    System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +94 
    System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +110 
    System.Data.SqlClient.SqlConnection.Open() +96 
    System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<open> 
    b__36(DbConnection t, DbConnectionInterceptionContext c) +36 
    System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +138 
    System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext) +477 
    System.Data.Entity.SqlServer.<>c__DisplayClass34.<usingconnection> 
     b__32() +344 
     System.Data.Entity.SqlServer.<>c__DisplayClass1.<execute> 
      b__0() +34 
      System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +251 
      System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) +196 
      System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action`1 act) +420 
      System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act) +335 
      System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable`1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +151 
      System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +287 
      System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +110 
      System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase() +236 
      System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection) +143 
      System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +207 
      System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +42 
      System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +136 
      System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update() +33 
      System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext) +175 
      System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState) +150 
      System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +444 
      System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +288 
      System.Data.Entity.Internal.<>c__DisplayClassf`1.<createinitializationaction> 
       b__e() +165 
       System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +110 
       System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +660 
       System.Data.Entity.Internal.LazyInternalContext.<initializedatabase> 
        b__4(InternalContext c) +31 
        System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +143 
        System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +292 
        System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +123 
        System.Data.Entity.Internal.InternalContext.Initialize() +42 
        System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39 
        System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +137 
        System.Data.Entity.Internal.Linq.InternalSet`1.Include(String path) +41 
        System.Data.Entity.Infrastructure.DbQuery`1.Include(String path) +142 
        System.Data.Entity.QueryableExtensions.Include(IQueryable`1 source, String path) +205 
        System.Data.Entity.QueryableExtensions.Include(IQueryable`1 source, Expression`1 path) +305 
        Microsoft.AspNet.Identity.EntityFramework.UserStore`6.GetUserAggregateAsync(Expression`1 filter) +610 
        Microsoft.AspNet.Identity.EntityFramework.UserStore`6.FindByNameAsync(String userName) +1069 
        Microsoft.AspNet.Identity.UserManager`2.FindByNameAsync(String userName) +177 
        Microsoft.AspNet.Identity.<validateusername> 
         d__4.MoveNext() +803 
         System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
         System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
         System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 
         Microsoft.AspNet.Identity.<validateasync> 
          d__0.MoveNext() +468 
          System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
          System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
          System.Runtime.CompilerServices.ConfiguredTaskAwaiter.GetResult() +24 
          Microsoft.AspNet.Identity.<createasync> 
           d__0.MoveNext() +846 
           System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
           System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
           System.Runtime.CompilerServices.ConfiguredTaskAwaiter.GetResult() +24 
           Microsoft.AspNet.Identity.<createasync> 
            d__d.MoveNext() +1113 
            System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
            System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
            System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
            Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +228 
            Microsoft.AspNet.Identity.UserManagerExtensions.Create(UserManager`2 manager, TUser user, String password) +260 
            DAL.Register.register() in c:\Users\paul\Documents\Visual Studio 2013\Projects\emptyWebsite\DAL\Register.cs:20 
            emptyWebsite.Controllers.HomeController.Index() in c:\Users\paul\Documents\Visual Studio 2013\Projects\emptyWebsite\emptyWebsite\Controllers\HomeController.cs:20 
            lambda_method(Closure , ControllerBase , Object[]) +101 
            System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59 
            System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435 
            System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60 
            System.Web.Mvc.Async.ActionInvocation.InvokeSynchronousActionMethod() +76 
            System.Web.Mvc.Async.AsyncControllerActionInvoker.<begininvokesynchronousactionmethod> 
             b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +36 
             System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +73 
             System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136 
             System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 
             System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49 
             System.Web.Mvc.Async.AsyncInvocationWithFilters.<invokeactionmethodfilterasynchronouslyrecursive> 
              b__3c() +117 
              System.Web.Mvc.Async.<>c__DisplayClass45.<invokeactionmethodfilterasynchronouslyrecursive> 
               b__3e() +323 
               System.Web.Mvc.Async.<>c__DisplayClass30.<begininvokeactionmethodwithfilters> 
                b__2f(IAsyncResult asyncResult) +44 
                System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47 
                System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136 
                System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 
                System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50 
                System.Web.Mvc.Async.<>c__DisplayClass28.<begininvokeaction> 
                 b__19() +72 
                 System.Web.Mvc.Async.<>c__DisplayClass1e.<begininvokeaction> 
                  b__1b(IAsyncResult asyncResult) +185 
                  System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42 
                  System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 
                  System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 
                  System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40 
                  System.Web.Mvc.Controller.<beginexecutecore> 
                   b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34 
                   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
                   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 
                   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
                   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
                   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44 
                   System.Web.Mvc.Controller.<beginexecute> 
                    b__15(IAsyncResult asyncResult, Controller controller) +39 
                    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62 
                    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 
                    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
                    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
                    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39 
                    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39 
                    System.Web.Mvc.MvcHandler.<beginprocessrequest> 
                     b__4(IAsyncResult asyncResult, ProcessRequestState innerState) +39 
                     System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 
                     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 
                     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 
                     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
                     System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40 
                     System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38 
                     System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514928 
                     System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

아무도 나를 UI 프로젝트에서 모델을 분리해서 할 수있는 간단한 방법을 찾을 수 있습니다 :

나는 다음과 같은 오류가?

감사

답변

0

나는 다음과 같은 시도 후이 문제를 해결하기 위해 관리 :

Moving ASP.NET Identity model to class library http://www.umbraworks.net/bl0g/rebuildall/2013/10/22/Moving_ASP_NET_Identity_model_into_another_assembly

내가 원래이 시도 않았고 내가 비록 많은 유사한 방법을 시도 신선한 상태에서 시작하여 데이터베이스를 삭제하고 특정 db 위치를 지정하면 도움이됩니다. 나중에 데이터 마이그레이션을 켜면 문제가 해결 될 것이라고 생각했습니다. 이것은 아직도 완전히 분리되지 않은의 Web.config의 연결 문자열에 의존하지만, 그렇지 않으면 난 이후 난 (base.OnModelCreating를 호출하지 않고 onModelBinding을 무시하기 때문입니다 것으로 나타났습니다

+0

지금

덕분에 작동하는 것 같다 modelBuilder); dbContext를 다른 프로젝트로 분리하는 것은 문제가되지 않았습니다. – Paul