Visual Studio 2013을 사용하여 Amazon에서 호스팅되는 첫 번째 C# 응용 프로그램의 프로덕션 버전을 빌드하고 있습니다. 초기 실행 중에 첫 번째 사용자를 생성하는 동안 로그인 자격 증명이 성공적으로 연결될 수 있지만 [SqlException (0x80131904): Login failed for user 'databaseuser'.]
이 발생합니다. 왜 누군가는 볼 수 있습니까? 나는 많은 분노를 느낀다. 세부 사항과 내가 시도한 내용은 다음과 같습니다.성공적인 테스트 연결을 사용하여 '사용자 로그인에 실패했습니다.'
테스트 데이터베이스는 SQL Express이고 스키마는 SQL Server Standard Edition의 인스턴스로 가져 왔습니다. 성공적으로 실행되는 테스트 Visual Studio 폴더는 Windows 탐색기를 사용하여 다른 위치로 복사되고 프로덕션을 위해 이름이 바뀌 었습니다. 프로덕션 Web.config 연결 문자열이 프로덕션 SQL 인스턴스와 해당 사용자 이름 및 암호로 변경되었습니다. 로그인은 서버 탐색기의 "연결 테스트", .edmx
모델 브라우저 추가/업데이트 저장 프로 시저 및 "databaseuser"자격 증명을 사용하여 SQL Server에 직접 로그인하여 성공적으로 테스트합니다. SQL 인스턴스는 SQL Server 및 Windows 인증 모드로 설정됩니다. "databaseuser"는 SQL 인스턴스의 두 데이터베이스 모두에 대해 읽기/쓰기 권한을가집니다.
코드
private MembershipProvider _provider;
public MembershipCreateStatus CreateUser(string userName, string password, string email)
{
MembershipCreateStatus status;
_provider.CreateUser(userName, password, email, null, null, true, null, out status);
//FAIL ON THE ABOVE LINE!
return status;
}
의 Web.config의 연결 문자열
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Server=[production endpoint];
Database=UsersDb;User ID=databaseuser;Password=[password];
Trusted_Connection=False;Connection Timeout=30;" />
<add name="WorkplaceEntities" connectionString="metadata=res://*/Data.Workplace.csdl|
res://*/Data.Workplace.ssdl|res://*/Data.Workplace.msl;
provider=System.Data.SqlClient;provider connection string="
data source=[production endpoint];initial catalog=Workplace;user id=databaseuser;
password=[password];MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
<add name="UsersDbEntities" connectionString="metadata=res://*/
Data.UsersDb.csdl|res://*/Data.UsersDb.ssdl|res://*/
Data.UsersDb.msl;provider=System.Data.SqlClient;
provider connection string="data source=[production endpoint];
initial catalog=UsersDb;user id=databaseuser;password=[password];
MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
스택 추적
[SqlException (0x80131904): Login failed for user 'databaseuser'.]
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +347
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) +191
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +141
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +362
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__DisplayClass33.<UsingConnection>b__32() +520
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) +276
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act) +546
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) +111
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) +445
System.Data.Entity.Database.Create() +31
System.Web.Providers.ModelHelper.EnsureDatabaseCreated(DbContext db) +160
System.Web.Providers.ModelHelper.CreateMembershipContext(ConnectionStringSettings setting) +115
System.Web.Providers.DefaultMembershipProvider.Membership_CreateUser(String applicationName, String userName, String password, String salt, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, DateTime& createDate, Boolean uniqueEmail, Int32 passwordFormat, Object& providerUserKey) +193
System.Web.Providers.DefaultMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) +1401
FirstApp.Controllers.AccountMembershipService.CreateUser(String userName, String password, String email) in c:\My Stuff\FirstApp\FirstApp\firstapp.mvc\Controllers\AccountController.cs:473
FirstApp.Controllers.HomeController.Index() in c:\My Stuff\FirstApp\FirstApp\firstapp.mvc\Controllers\AccountController.cs:98
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__39(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__3d() +117
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(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__DisplayClass2b.<BeginInvokeAction>b__1c() +72
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(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() +133
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
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() +133
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
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__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
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() +9744373
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
_databaseuser_를 사용하여 로그인을 테스트 할 때 _UsersDb_ 데이터베이스로 변경할 수 있습니까? 연결을 테스트하기 위해 UDL 파일을 사용해 보시기 바랍니다. https://blogs.technet.microsoft.com/michaelgriswold/2014/01/06/the-easy-way-to-test-sql-connectivity/ –
감사합니다. 응답, 닉! 이전에 UDL 파일에 대해 들어 본 적이 없으므로 그 부분을 살펴 보았습니다. 그러나 "데이터베이스 UsersDb 변경"을 명확히 해두시겠습니까? "databaseuser"는 SQL에 직접 로그인하여 두 데이터베이스 모두를 쿼리 할 수 있으며 두 데이터베이스의 "연결 테스트"를 통해 서버 탐색기의 연결이 성공적으로 수행됩니다. – jle
나는 '로그인 실패'라고 말했지만 실제로는 로그인이 정상적으로 작동했을 때이 오류를 발견했습니다. 사용자가 기본 데이터베이스에 액세스 할 수 없습니다. 그러나 당신의 설명에서 이것은 문제가 아닌 것처럼 들립니다. –