'用户登录失败'成功的测试连接

时间:2016-12-19 20:50:22

标签: c# asp.net sql-server asp.net-mvc amazon-web-services

我使用Visual Studio 2013构建我的第一个C#应用程序的生产版本,这两个版本都在亚马逊上托管。在初始运行期间创建第一个用户时,即使登录凭据可以成功连接,也会引发[SqlException (0x80131904): Login failed for user 'databaseuser'.]。谁能明白为什么?非常感谢,因为我很恼火。细节和我尝试过的是:

测试数据库在SQL Express上,其架构已导入SQL Server Standard Edition实例;成功运行的测试Visual Studio文件夹已使用Windows资源管理器复制到另一个位置并重命名用于生产;生产的Web.config连接字符串已更改为生产SQL实例以及相应的用户名和密码;登录在服务器资源管理器"测试连接",.edmx模型浏览器添加/更新存储过程中成功测试,并使用" databaseuser&#直接登录到SQL Server 34;证书。 SQL实例设置为SQL Server和Windows身份验证模式。 "数据库用户"对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

1 个答案:

答案 0 :(得分:0)

我不确定为什么会这样,但是这里显然已经解决了问题:我删除了&#34; databaseuser&#34;的Web.config凭据。只有读/写访问权限,并用数据库管理员凭据替换它们。应用程序测试成功。然后将管理员凭据替换为原始&#34;数据库用户&#34;凭证,一切正常。似乎由于某种原因,应用程序需要管理员第一次访问连接,然后读/写用户也可以这样做。

感谢Nick.McDermaid的答案。他们都是正确的并且正在完成,但由于某种原因,该程序需要管理员首先显示它。

相关问题