在Swagger中运行Entity Framework API时遇登录连接错误求助
解决Entity Framework API通过Swagger运行时的SQL Server连接异常
以下是针对你遇到的System.InvalidOperationException和SqlException(管道另一端无进程)的具体解决步骤:
检查SQL Server服务状态
打开服务管理器(Win+R输入services.msc),找到对应SQL Server实例(默认是SQL Server (MSSQLSERVER)),确认服务处于正在运行状态。如果未启动,右键选择「启动」。验证连接字符串配置
核对appsettings.json中的连接字符串:- Windows认证模式示例:
"ConnectionStrings": { "DefaultConnection": "Server=.;Database=YourTargetDB;Trusted_Connection=True;TrustServerCertificate=True;" } - SQL Server认证模式示例(需确保账号密码正确,且SQL Server启用混合认证):
"ConnectionStrings": { "DefaultConnection": "Server=.;Database=YourTargetDB;User Id=YourUsername;Password=YourPassword;TrustServerCertificate=True;" }
注:
TrustServerCertificate=True可临时绕过SSL证书验证,生产环境建议配置合法证书后移除该参数- Windows认证模式示例:
启用SQL Server共享内存协议
打开SQL Server配置管理器,展开「SQL Server网络配置」→ 对应实例的「协议」,确保Shared Memory协议已启用。启用后重启SQL Server服务生效。添加暂时性故障重试机制
按照异常提示,在DbContext配置中加入EnableRetryOnFailure提升API容错性,修改Program.cs中的配置代码:builder.Services.AddDbContext<YourDbContext>(options => options.UseSqlServer( builder.Configuration.GetConnectionString("DefaultConnection"), sqlOptions => sqlOptions.EnableRetryOnFailure( maxRetryCount: 5, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null ) ) );检查登录账号权限
- 若使用Windows认证,确保运行API的账户(本地调试为当前用户,部署后为IIS应用池账户)拥有SQL Server的登录权限及目标数据库的访问权限。
- 若使用SQL Server认证,确认账号未被锁定,且已被授予目标数据库的访问权限。
内容的提问来源于stack exchange,提问作者Ritik Yadav
相关产品推荐
相关产品推荐

