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

ASP.NET Core MVC使用Windows认证连接SQL Server登录失败(Error:18456)

解决ASP.NET Core MVC Windows身份验证连接SQL Server出现Error 18456 State 58的问题

针对你遇到的「尝试使用SQL身份验证登录失败,服务器仅配置为集成身份验证模式」(Error 18456, Severity: 14, State: 58)错误,即使修改过身份验证模式、启用TCP/IP等仍未解决的情况,可按以下步骤逐一排查:

  • 彻底检查连接字符串
    确保连接字符串完全使用Windows身份验证,绝对不能包含User ID或Password字段(哪怕是空值也会触发SQL身份验证尝试)。正确示例:

    "ConnectionStrings": {
      "DefaultConnection": "Server=YOUR_SERVER_NAME;Database=YOUR_DB_NAME;Trusted_Connection=True;TrustServerCertificate=True;"
    }
    

    注:Trusted_Connection=True与Integrated Security=True功能等价,二选一即可。

  • 重新确认SQL Server身份验证模式并重启服务

    1. 打开SQL Server Management Studio(SSMS),右键目标服务器→属性→安全性;
    2. 确认已选中SQL Server和Windows身份验证模式;
    3. 通过Win+R输入services.msc打开服务列表,找到对应SQL Server实例服务(如SQL Server (MSSQLSERVER)),右键选择重启;
    4. 若存在SQL Server Agent服务,建议一并重启,避免配置缓存残留。
  • 检查应用程序运行身份(部署/开发环境)

    • 若部署在IIS:打开IIS管理器→找到目标应用程序池→高级设置→进程模型→标识,确保使用内置账户(如ApplicationPoolIdentity)或有权访问SQL Server的Windows账户;
    • 若使用IIS Express开发:打开项目根目录的launchSettings.json,确认windowsAuthentication设为true,anonymousAuthentication设为false。
  • 验证Windows账户的SQL Server权限

    1. 在SSMS中展开服务器→安全性→登录名;
    2. 找到对应Windows账户(域账户格式为DOMAIN\用户名,本地账户为机器名\用户名,IIS应用池身份为IIS APPPOOL\应用池名称);
    3. 右键该登录名→属性→用户映射,勾选目标数据库,确保已创建对应数据库用户并分配必要权限(如db_datareader、db_datawriter)。
  • 清除数据库连接池(调试场景)
    连接池可能缓存旧配置,可在代码初始化阶段添加以下代码清除(仅开发调试使用,生产环境不建议):

    using System.Data.SqlClient;
    
    // 在Program.cs的初始化逻辑中添加
    SqlConnection.ClearAllPools();
    

    或直接重启整个应用程序(IIS/IIS Express)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:27:29