c# - 无法使用身份验证 = Active Directory 托管标识从 dotnet Web 应用程序连接到 Azure SQL MI

标签 c# sql-server azure azure-active-directory azure-sql-managed-instance

我有一个在 prem Windows 服务器上运行的 ASP.NET Web 应用程序。我们需要从 C# 代码连接到 Azure SQL MI。我尝试了以下示例代码:

string ConnectionString1 = @"Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Encrypt=True; Database=testdb";

using (SqlConnection conn = new SqlConnection(ConnectionString1)) {
    conn.Open(); //Erroring out
}

错误消息: 未处理的异常:Microsoft.Data.Sqlclient.Sqlexception:ManagedIdentityCredential 身份验证失败:托管身份响应未采用预期格式

我错过了什么?

注意:我可以使用 Active Directory 身份验证通过 SQL Server Management studio 连接到同一个 Azure SQL 托管实例。仅当我们尝试从 C# 代码建立连接时才会看到该问题

最佳答案

I have an ASP.NET web application running on prem windows server.

托管身份在本地服务器上不可用,除非它们配置为 Azure ARC-Enabled

否则,要使用 .NET 从本地服务器对托管实例进行身份验证,您可以使用 here 中记录的任何 Azure AD 身份验证方法。 ,除了 SQL Auth 甚至 Windows Auth .

但最常见的方法可能是

SQL Server 身份验证

Active Directory Service Principal Auth

关于c# - 无法使用身份验证 = Active Directory 托管标识从 dotnet Web 应用程序连接到 Azure SQL MI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74957427/

相关文章:

c# - 如何从 foreach 循环中修改 foreach 迭代变量?

sql-server - 存储过程 (SQL) 中的计算

c# - Dapper 异常 - Get<T> 仅支持具有 [Key] 属性的实体,但已定义 [key]

azure - 为什么我无法通过 Visual Studio 发布到 Azure 云服务?

c# - 访问在 azure 服务器上运行的 .net core 应用程序中的共享 View 文件夹

c# - 找出 linq 完成了多少次迭代

c# - HTTP POST 请求在 Azure 应用服务上转变为 GET

c# - 如何通过将一个C#项目分解为多个项目来加快编译速度

sql - 在存储过程中访问另一个数据库中的数据

azure - 并行地为多个队列调用相同的queuetrigger函数