2013-01-14 1 views
1

SQL Server Express 2012와 함께 Visual Studio 2012를 사용하고 있습니다. "인터넷 응용 프로그램"템플릿을 사용하여 MVC 4 웹 응용 프로그램을 만들었습니다.내 MVC 4 승인 검사에서 예외가 발생하는 이유는 무엇입니까?

(템플릿의 MDF가 아닌) SQL Server 2012 Express 인스턴스에 기존 데이터베이스를 사용하고 싶습니다. 대신 내 로컬 SQL Express 인스턴스를 가리키고 템플리트 생성 MDF를 삭제하도록 web.config를 수정했습니다. 내있는 Web.Config이 있습니다

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 

내가 기대하는 것처럼 최대 응용 프로그램 화재되면, 테이블이 관리 데이터베이스에 작성 얻을 :

<add name="DefaultConnection" 
    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Administration;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/> 

주식 멤버 코드는 DB를 초기화 할 수있는 통화가 있습니다 . 사용자를 만들 수 있으며 사용자가 관리에 배치됩니다. 역할 테이블을 채우고 코드를 통해 사용자의 프로필에 역할을 추가하고이를 확인합니다. 예 :

Roles.GetRolesForUser("kristian"); // = string[] { "Administrator" } 

그러나 나는 시도하고 같은 역할 기반 인증을 사용하는 경우 :

[Authorize(Roles = "Administrator")] 

나는 다음과 같은 예외가 얻을 :

Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed. 

그것은 만드는 긴 불쾌한 스택 트레이스를 제공을 MDF 파일을 만들려고하고 있다고 생각합니다.

[SqlException (0x80131904) : 생성하지 못했습니다. 사용자 인스턴스에 대한 프로세스 시작 실패로 인해 SQL Server의 사용자 인스턴스. 연결이 종료된다.] System.Data.SqlClient.SqlInternalConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection, 액션 1 wrapCloseInAction) +5295167 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +69 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +30 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +317 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +889 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) +434 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5309659 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 재시 DbConnectionOptions의 userOptions, DbConnectionInternal & 연결) 5,311,874 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection 외부 연결, DbConnectionFactory 연결 팩토리, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) +143 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 다시 시도) +83 System.Data.SqlClient.SqlConnection.Open() +96 System.Web.Management.SqlServices.GetSqlConnection (String server, String user, String password, Boolean trusted, String connectionString) +76

[HttpException (0x80004005) : SQL Server 데이터베이스에 연결할 수 없습니다.] System.Web.Management.SqlServices.GetSqlConnection (문자열 서버, 문자열 사용자, 문자열 암호, 부울 트러스티 드, 문자열 connectionString) +131 System.Web.Management.SqlServices.SetupApplicationServices (문자열 서버, 문자열 사용자, 문자열 암호, 부울 트러스트 (문자열 데이터베이스, 문자열 dbFileName, SqlFeatures 기능, 부울 설치) +89 System.Web.Management.SqlServices.Install (String fullFileName, String dataDir, String connectionString) +386

이 기쁨의 번들 하단에있는 라인은 지금 삭제 된 MDF ('System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile')와 관련 있다고 생각합니다. . 이 문제가 맞습니까? 아니면 템플릿에 의해 구현 된 인증이 불완전한 것입니까?

다른 사람이이 문제를 처리하거나 내 속성 사용이 실패한 이유를 알고있는 경우 도움을 크게 주시면 감사하겠습니다.

+1

"MDF"에 대한 전체 솔루션 검색 (Ctrl Shift F)을 시도 했습니까? –

답변

1

동일한 문제가있었습니다.SimpleMembership을 제대로 초기화하지 않는 것과 관련이있는 것으로 보입니다. [InitializeSimpleMembership]이 사용되는지 확인하거나 Database.SetInitializer<UsersContext>(null);

관련 문제