簡體   English   中英

成功連接測試后,“用戶登錄失敗”

[英]'Login Failed for User' with Successful Test Connection

我正在使用Visual Studio 2013構建第一個C#應用程序的生產版本,這兩個版本都托管在Amazon上。 在初始運行期間創建第一個用戶時,即使登錄憑據可以成功連接,也會拋出[SqlException (0x80131904): Login failed for user 'databaseuser'.] 誰能看到原因? 在此先多謝,因為我很生氣。 詳細信息和我嘗試過的是:

測試數據庫位於SQL Express上,其架構已導入到SQL Server Standard Edition的實例中。 已成功運行的測試Visual Studio文件夾已使用Windows資源管理器復制到另一個位置,並已重命名用於生產。 生產Web.config連接字符串已更改為生產SQL實例以及相應的用戶名和密碼; 登錄名在Server Explorer的“測試連接”, .edmx模型瀏覽器“添加/更新”存儲過程中成功測試,並使用“ databaseuser”憑據直接登錄到SQL Server。 SQL實例設置為SQL Server和Windows身份驗證模式。 “數據庫用戶”對SQL實例中的兩個數據庫都具有讀/寫權限。

代碼在public class AccountMembershipService : IMembershipService失敗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

我不確定為什么這行得通,但是這顯然可以解決問題:我僅通過讀/寫訪問權限刪除了“ databaseuser”的Web.config憑據,並將其替換為數據庫管理員憑據。 該應用程序已成功測試。 然后將管理員憑據替換為原始的“ databaseuser”憑據,一切正常。 似乎由於某種原因,該應用程序需要管理員首次訪問該連接,然后,讀/寫用戶可以從此開始執行相同的操作。

感謝Nick.McDermaid的回答。 它們都是正確的,並且已經完成,但是由於某種原因,程序需要管理員先向其顯示方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM