生产服务器ASP.NET Core Web API仅出现MySQL连接超时错误求助
解决思路
网络连通性排查
- 在生产服务器执行
ping 171.1.1.0,验证MySQL服务器的基础可达性。 - 用
telnet 171.1.1.0 3306(若MySQL端口已修改,替换为对应端口)测试端口是否开放,确认生产服务器能访问MySQL服务端口。 - 检查生产服务器的Windows防火墙、云服务商安全组配置,确保允许出站访问MySQL服务器的IP和端口。
- 在生产服务器执行
MySQL服务器权限与配置检查
- 查看MySQL配置文件(Linux为
my.cnf,Windows为my.ini),确认bind-address是否允许生产服务器IP访问,或设置为0.0.0.0(需兼顾安全)。 - 验证MySQL用户权限,确保连接字符串中的账号拥有从生产服务器IP访问
myDbName的权限,可执行SQL:GRANT ALL PRIVILEGES ON myDbName.* TO 'your_user'@'生产服务器IP' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;
- 查看MySQL配置文件(Linux为
连接字符串与本地验证
- 对比本地与生产环境
appsettings.json(或环境变量)中的连接字符串,确认IP、端口、用户名、密码、数据库名无拼写错误。 - 在生产服务器用MySQL客户端(如Navicat)使用相同参数连接数据库,排除代码外的连接问题。
- 对比本地与生产环境
IIS及运行环境配置
- 检查IIS应用程序池的.NET CLR版本,ASP.NET Core 5需设置为
无托管代码。 - 测试将应用程序池身份改为
LocalSystem(后续可调整为最小权限),确认是否因权限不足导致网络访问失败。 - 确认生产服务器已安装ASP.NET Core 5.0运行时(托管包),缺失则需下载安装。
- 检查IIS应用程序池的.NET CLR版本,ASP.NET Core 5需设置为
EF Core配置优化
- 按照错误提示,在
UseMySql调用中添加瞬时故障重试机制:services.AddDbContext<serviziContext>(options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)) .EnableRetryOnFailure()); - 可在连接字符串中增加超时时间,例如添加
Connection Timeout=30(默认15秒,按需调整)。
- 按照错误提示,在
内容的提问来源于stack exchange,提问作者Simone D.
相关产品推荐
相关产品推荐

