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

发布Azure MVC应用时,Active Directory集成数据库连接报错

解决Azure MVC应用AD集成认证连接串报错“指定的域名格式无效”问题

问题背景

已将MVC应用部署到Azure平台,原使用SQL认证连接串:

Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=dbname;User ID=username;Password=password;Encrypt=True;TrustServerCertificate=False

但存储过程会以该固定用户身份执行,导致CreatedBy/ModifiedBy字段无法记录实际操作的用户。改用AD集成认证连接串后:

Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=dbname;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Integrated"

连接测试成功,但部署应用后报错“指定的域名格式无效”。

可行解决方法

1. 移除Authentication参数的引号

连接串中Authentication="Active Directory Integrated"的引号会造成解析异常,修改为无引号格式:

Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=dbname;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Integrated

部分本地配置工具会自动添加引号,但Azure部署环境对引号的解析逻辑不同,移除后可避免格式错误。

2. 配置应用服务托管身份并授权

  • 启用应用服务的系统分配托管身份:进入Azure门户的应用服务页面,在「身份」选项卡开启系统分配身份。
  • 为托管身份授予SQL数据库权限:进入Azure SQL数据库的「查询编辑器」,执行以下SQL:
    CREATE USER [你的应用服务名称] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [你的应用服务名称];
    ALTER ROLE db_datawriter ADD MEMBER [你的应用服务名称];
    -- 若需执行存储过程,添加对应权限
    GRANT EXECUTE ON SCHEMA::dbo TO [你的应用服务名称];
    

3. 检查.NET版本与SQL驱动版本

  • 确保项目使用的.NET版本支持AD集成认证:.NET Framework需4.7.2及以上,.NET Core需3.1及以上。
  • 更新SQL驱动包:将Microsoft.Data.SqlClient或System.Data.SqlClient升级至最新稳定版本,旧版本存在Azure AD连接串解析的已知bug。

4. 通过Azure应用服务配置管理连接串

避免在web.config中硬编码连接串,改为在Azure应用服务的「配置」->「应用程序设置」中添加连接串:

  • 类型选择「SQLAzure」
  • 值填入不带引号的AD集成认证连接串
    Azure会自动处理连接串的解析与环境适配,减少格式问题。

5. 验证托管身份的服务器级权限

若数据库授权后仍报错,需确认托管身份已被添加为SQL服务器的Azure AD管理员:进入SQL服务器的「Azure Active Directory」设置,添加应用服务的系统分配身份为管理员,确保身份拥有足够的服务器访问权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:40:34