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

.NET Core 3.1部署Azure App Service后无法连接Azure MySQL 5.7排查

问题解答

背景

基于.NET Core 3.1的ASP.NET MVC项目,已部署至Azure App Service,数据库使用Azure MySQL 5.7服务器。本地通过WorkBench配置SSL(启用SSL并附加证书)可正常连接运行,但发布到Azure App Service后无法连接数据库。

使用的依赖库:

  • MySql.EntityFrameworkCore 3.1.X
  • Microsoft.EntityFrameworkCore 3.1.X
  • MySql-Connector-Net 8.0.X

连接字符串模板:"Server=.mysql.database.azure.com;Port=3306;Database=;Uid=;Pwd=;"


针对疑问的解答

1. Azure MySQL 5.7版本是否是问题根源?如何升级?

Azure MySQL 5.7已在2023年结束官方支持,属于退役版本,确实可能存在兼容性问题(尤其是与较新的连接器库、Azure平台更新的适配问题)。

  • 若在Azure Portal的MySQL服务器概述页未找到升级选项,可能是实例属于旧部署模式或区域限制:
    • 先检查服务器左侧菜单「设置」下的「升级」选项,部分符合条件的实例仍可直接升级到8.0;
    • 若没有升级入口,可通过Azure支持工单申请协助升级,无需直接新建付费服务器;
    • 若升级路径受阻,可使用Azure数据库迁移服务将数据迁移到新建的MySQL 8.0服务器,迁移过程可保证数据一致性,且8.0版本在Azure平台有完整支持。

2. Azure App Service的SSL证书配置问题

Azure App Service连接Azure MySQL时,无需手动上传或配置SSL证书——Azure环境已内置信任Azure MySQL的根证书(DigiCert Global Root CA),只需确保以下两点:

  • 连接字符串中添加SslMode=Required参数,强制启用SSL连接,完整连接字符串示例:
    "Server=xxx.mysql.database.azure.com;Port=3306;Database=xxx;Uid=xxx@xxx;Pwd=xxx;SslMode=Required"
    
  • 确认Azure MySQL服务器的「连接安全性」设置中,已开启「强制启用SSL连接」。

若确实需要指定证书路径(极少场景),可将根证书文件放到项目的wwwroot目录,发布后使用相对路径指定,例如:SslCa=./wwwroot/DigiCertGlobalRootCA.crt.pem,但此操作并非必要。

3. 其他可能的故障原因

  • 防火墙规则限制:检查Azure MySQL服务器的「连接安全性」,确认已勾选「允许Azure服务和资源访问此服务器」,或手动添加App Service的出站IP(可在App Service「属性」页查看完整出站IP列表);
  • 连接字符串配置错误:发布到Azure后,需在App Service的「配置」-「连接字符串」中正确配置,避免硬编码在代码中(硬编码可能因环境变量覆盖、敏感信息泄露导致失效),同时确保Uid格式为用户名@服务器名称(例如admin@myserver);
  • 库版本兼容性:MySql.EntityFrameworkCore 3.1.X需与对应版本的MySqlConnector匹配(如MySql.EntityFrameworkCore 3.1.18对应MySqlConnector 8.0.26),版本不匹配可能引发连接异常;
  • 连接超时:Azure内部网络延迟可能导致连接超时,可在连接字符串中添加Connection Timeout=30(或更长时间)测试;
  • 环境变量加载问题:确保代码中通过Configuration.GetConnectionString("连接字符串名称")读取配置,而非直接硬编码,避免环境配置未正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:02:42