在azure sql上连接数据库出现问题



我正在尝试在实体框架核心上做更新数据库,这给了我这个错误。

Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com'.
at Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e)
at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.OpenDbConnection(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass18_0.<Exists>b__0(DateTime giveUp)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__DisplayClass12_0`2.<Execute>b__0(DbContext c, TState s)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation, Func`2 verifySucceeded)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean retryOnNotExists)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:429fba14-5656-4560-9cb8-efb35ab0dc34
Error Number:18456,State:1,Class:14
Login failed for user 'hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com'.

我可以用这个密码连接到SSMS并连接到数据库,我有其他API,我可以连接到它,我不知道发生了什么。

services.AddDbContext<AAAADbContext>(options => 
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnectionString")));

连接字符串

"DefaultConnectionString": "Server=tcp:xxxx-xxxxxxxx.database.windows.net,1433;Initial Catalog=xxxxxxxxxxxDb;Persist Security Info=False;User ID= ;Password= ;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password"

关于MSSQLSERVER_18456的更多信息:

当连接尝试因密码或用户名错误导致身份验证失败而被拒绝时,将向客户端返回类似以下的消息:"用户''登录失败。(Microsoft SQL Server, Error: 18456)".

关于状态1的更多信息:

错误信息不可用。这种状态通常意味着您没有接收错误详细信息的权限。请与您的SQL Server管理员联系以获取更多信息。

似乎这一切都归结为用户名/密码错误,或者用户/数据库配置错误。

编辑:

您是否看过使用托管身份连接到您的数据库?

App Service在Azure中提供高度可扩展、自修补的web托管服务。它还为你的应用程序提供了一个托管身份,这是一个安全访问Azure SQL数据库和其他Azure服务的交钥匙解决方案。App Service中的身份管理通过消除应用中的秘密(如连接字符串中的凭据),使应用更安全。在本教程中,您将向您在以下教程中构建的示例web应用程序添加托管身份:

  • 教程:构建一个ASP。. NET应用程序在Azure与Azure SQL数据库
  • 教程:构建ASP。. NET Core和Azure SQL数据库应用程序在Azure应用程序服务

来源:教程:使用托管身份从应用程序服务安全Azure SQL数据库连接