2016-12-19 33 views
0

私は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モデルブラウザの追加/更新ストアドプロシージャ、および「データベースユーザー」資格情報を使用してSQL Serverに直接ログインして正常にテストします。 SQLインスタンスはSQL ServerおよびWindows認証モードに設定されています。 "databaseuser"には、SQLインスタンス内の両方のデータベースに対する読み取り/書き込み権限があります。

コードはここに失敗しpublic class AccountMembershipService : IMembershipService

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=&quot; 
      data source=[production endpoint];initial catalog=Workplace;user id=databaseuser; 
      password=[password];MultipleActiveResultSets=True;App=EntityFramework&quot;" 
      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=&quot;data source=[production endpoint]; 
      initial catalog=UsersDb;user id=databaseuser;password=[password]; 
      MultipleActiveResultSets=True;App=EntityFramework&quot;" 
      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 
+0

_databaseuser_でログインをテストすると、_UsersDb_データベースに変更できますか?あなたの接続をテストするためにUDLファイルを試すことをお勧めします:https://blogs.technet.microsoft.com/michaelgriswold/2014/01/06/the-easy-way-to-test-sql-connectivity/ –

+0

ありがとうレスポンス、ニック!以前はUDLファイルについて聞いたことがありませんでしたので、その点を検討していますが、「データベースUsersDbへの変更」を明確にしてもよろしいですか? "databaseuser"はSQLに直接ログインして両方のデータベースにクエリを実行することができ、両方のデータベースの "Test Connection"を介してサーバーエクスプローラでの接続が成功します。 – jle

+0

先日、「ログインに失敗しました」と言われたが、実際にはログインがうまくいき、ユーザーがデフォルトのデータベースにアクセスできないというエラーが発生しました。しかし、あなたの説明から、これは問題ではないように思えます。 –

答えて

0

なぜこれがうまくいっているのか分かりませんが、明らかにこの問題を解決しました。「databaseuser」のWeb.config資格情報を読み取り/書き込みアクセスのみで削除し、データベース管理者の資格情報で置き換えました。アプリケーションは正常にテストされました。管理者の資格情報は元の "データベースユーザー"の資格情報に置き換えられ、すべてが機能します。何らかの理由でアプリケーションが最初に接続にアクセスするために管理者を必要としていたようで、その後読み書き可能なユーザーが同じことを行うことができます。

Nick.McDermaidさんへの回答ありがとうございます。彼らはすべて正しかったし、やっていたが、何らかの理由で最初にそれを示すために管理者が必要だった。

関連する問題