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

.NET 8 API部署后仍使用旧SQL连接串问题求助

问题分析与解决步骤

核心问题:连接串配置冲突

你当前的连接串同时包含user id/password和Trusted_Connection=True,SQL Server的优先级规则是优先使用Windows集成身份验证,所以即使你写了SQL账号密码,系统还是会用应用池的Windows用户去连接数据库,这就是事件日志里显示的现象。

解决与排查步骤

  1. 修正连接串
    把连接串里的Trusted_Connection=True改为Trusted_Connection=False,或者直接删除这个参数,确保只保留SQL账号密码的配置:

    "MainConnection": "Server=.;Database=MyDatabase;user id=API_DatabaseUser;password=api_password;encrypt=false;MultipleActiveResultSets=true"
    
  2. 检查配置加载优先级
    .NET 8的配置加载有固定优先级(从高到低):命令行参数 > 环境变量 > web.config的<connectionStrings>节点 > appsettings.Production.json > appsettings.json。

    • 检查web.config里的<connectionStrings>是否存在同名的MainConnection,如果有,确保它的配置和你想要的一致,否则会覆盖appsettings的内容;
    • 确认发布设置里的连接串替换规则是否正确,有没有把开发环境的配置错误地带到生产环境。
  3. 验证部署后的实际配置文件
    登录到服务器,找到API的部署目录,直接打开appsettings.json(以及appsettings.Production.json如果存在),确认里面的连接串确实是修改后的版本——有时候发布过程中配置文件可能没有被正确替换,比如项目里的配置文件设置了“不复制到输出目录”。

  4. 排查环境变量
    检查服务器上是否设置了环境变量ConnectionStrings__MainConnection(注意双下划线是.NET的环境变量命名规则),如果有,这个值会覆盖appsettings里的配置,需要删除或者修改成正确的连接串。

  5. 核对代码中的配置读取逻辑
    再次确认代码中读取连接串的代码是否正确,比如是不是用了Configuration.GetConnectionString("MainConnection"),有没有写错键名,或者有没有硬编码的旧连接串(比如在DbContext的配置里直接写了集成验证的连接串)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:25:00