.NET 6 Web API部署IIS后无法访问数据库数据求助
问题:.NET 6 Web API部署IIS后无法访问MySQL数据库数据
我用.NET 6开发了基于MySQL的Web API,通过Entity Framework实现数据存储。将该解决方案部署到IIS后,可访问存储在普通数组中的本地数据,默认WeatherForecast接口也能正常访问,但无法访问存储在数据库中的数据,访问对应接口时出现错误。
现有Appsettings.Json配置
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "ContactsApiConnectionString": "Server=STL-TECH-IT;Encrypt=False;Database=ContactsDb;User Id = sa; Persist Security Info=true; Password=password;Trusted_Connection= true ; MultipleActiveResultSets=true; " } }
排查与解决建议
- 修复连接字符串冲突:连接字符串同时配置了
User Id=sa(SQL Server账号认证)和Trusted_Connection=true(Windows身份认证),二者不可同时生效。二选一调整:- 若使用SQL Server账号:删除
Trusted_Connection= true部分 - 若使用Windows身份认证:删除
User Id = sa; Persist Security Info=true; Password=password;部分
- 若使用SQL Server账号:删除
- 检查IIS应用池权限:IIS应用池默认账户(如
IIS AppPool\你的应用池名称)可能无MySQL数据库访问权限。可采取两种方式:- 给该内置账户分配数据库的读写权限
- 将应用池身份切换为具备数据库访问权限的域账户或本地账户
- 确保MySQL驱动正常部署:确认服务器上已安装
MySqlConnector组件,或在项目中设置该NuGet包的「复制本地」属性为True,确保部署时驱动文件被复制到服务器 - 排查网络与防火墙:检查IIS服务器防火墙是否允许访问MySQL服务器的3306端口,同时验证
STL-TECH-IT服务器名能在IIS服务器上正常解析到对应IP - 执行数据库迁移:部署后需在服务器上运行
dotnet ef database update命令,确保数据库结构与代码中的Entity Framework模型一致 - 开启详细日志定位问题:修改
appsettings.json的Logging配置,添加"Microsoft.EntityFrameworkCore": "Debug",然后查看IIS日志文件(默认路径C:\inetpub\logs\LogFiles)获取具体错误信息
内容的提问来源于stack exchange,提问作者Toyabur Rahman Utshow
相关产品推荐
相关产品推荐

