You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 4.8应用通过VM托管身份连接Azure SQL托管实例求助

解决方案步骤

1. 修改连接字符串

把原来的Trusted_Connection=true替换为Authentication=Active Directory Managed Identity,同时补充加密配置(Azure SQL托管实例强制要求加密连接),并将Server替换为你的Azure SQL托管实例FQDN(格式类似your-managed-instance-name.database.windows.net)。

修改后的连接字符串示例:

<add name="AppContext" connectionString="Server=tcp:your-managed-instance-fqdn,1433; Database=App_DevDB; Authentication=Active Directory Managed Identity; Encrypt=True; TrustServerCertificate=False" providerName="System.Data.SqlClient" />
<add name="BackgroundJobsContext" connectionString="Server=tcp:your-managed-instance-fqdn,1433; Database=Hangfire_DevDB; Authentication=Active Directory Managed Identity; Encrypt=True; TrustServerCertificate=False" providerName="System.Data.SqlClient" />

注意:你的System.Data.SqlClient NuGet包版本得是4.7.2及以上,这个版本开始支持Authentication参数和Azure AD托管身份验证。

2. 配置DbContext(使用Entity Framework时)

如果项目用了Entity Framework,无需修改DbContext的构造逻辑,只要初始化时使用上述修改后的连接字符串即可。示例代码:

public class AppContext : DbContext
{
    public AppContext() : base("name=AppContext")
    {
    }
    // ... DbSet定义等业务代码
}

3. 确认数据库权限配置

你已经在托管实例中创建了VM的托管身份,还需为该身份配置目标数据库的访问权限:

  • 登录Azure SQL托管实例的主数据库,执行以下SQL:
    -- 为VM的系统分配托管身份创建登录名
    CREATE LOGIN [你的VM名称] FROM EXTERNAL PROVIDER;
    
    -- 切换到目标数据库(例如App_DevDB)
    USE App_DevDB;
    -- 创建对应数据库用户
    CREATE USER [你的VM名称] FOR LOGIN [你的VM名称];
    -- 赋予必要权限(示例为读写权限,可按需调整)
    ALTER ROLE db_datareader ADD MEMBER [你的VM名称];
    ALTER ROLE db_datawriter ADD MEMBER [你的VM名称];
    

如果是用户分配的托管身份,将上述SQL中的你的VM名称替换为托管身份的名称即可。

4. 配置IIS应用池身份

VM上的IIS应用池必须运行在LocalSystem账户下,这样应用才能自动使用VM的系统分配托管身份向Azure SQL托管实例进行身份验证。

操作步骤:

  • 打开IIS管理器,找到你的应用对应的应用池
  • 右键选择“高级设置”
  • 在“进程模型” -> “标识”选项中,选择“LocalSystem”
  • 重启应用池生效

验证连接

部署修改后的应用,测试API或后台任务是否能正常连接数据库。如果遇到权限错误,检查数据库用户的权限配置;如果遇到身份验证错误,确认System.Data.SqlClient版本是否符合要求,以及应用池身份是否正确设置。

内容的提问来源于stack exchange,提问作者Lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:56:29