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

Microsoft.Data.SqlClient配置中SqlConfigurableRetryLogic未生效问题求助

解决Microsoft.Data.SqlClient配置文件重试逻辑不生效的问题

一、配置文件的正确配置要点

  1. 配置文件位置:.NET 6 Web应用作为启动项目,重试逻辑配置必须放在Web项目的App.config中(类库的App.config不会被读取),且需确保该文件的“复制到输出目录”属性设置为“始终复制”。
  2. 依赖包安装:Web项目需安装System.Configuration.ConfigurationManager NuGet包,因为.NET 6默认不包含传统配置节的读取能力。
  3. 配置节正确性校验:确认配置节的type属性与使用的Microsoft.Data.SqlClient版本匹配,5.1.1版本的程序集名称为Microsoft.Data.SqlClient,你当前的配置代码语法无误。

二、验证配置是否被加载

在代码中手动读取配置节,确认配置是否被正确识别:

using System.Configuration;
using Microsoft.Data.SqlClient;

// 在应用初始化代码中添加
var connectionRetrySection = ConfigurationManager.GetSection("SqlConfigurableRetryLogicConnection") as SqlConfigurableRetryConnectionSection;
if (connectionRetrySection != null)
{
    // 输出配置信息,确认读取成功
    Console.WriteLine($"重试方法:{connectionRetrySection.RetryMethod}");
    Console.WriteLine($"重试次数:{connectionRetrySection.NumberOfTries}");
}

如果读取结果为null,说明配置文件未被正确加载,需检查文件路径、复制属性及配置节语法。

三、重试逻辑的有效测试方法

你当前的测试方法(数据库离线)无法触发默认重试逻辑,因为SqlClient的默认重试仅针对特定临时错误(如死锁、连接超时、错误码1205/4060等),数据库离线导致的“无法找到服务器”错误不在默认重试范围内。

有效测试方式:

  • 手动触发数据库死锁,观察重试情况
  • 设置较短的连接超时时间,模拟临时连接故障
  • 自定义重试错误列表,包含数据库离线对应的错误码(如10060)

四、代码层面的全局配置方案

若配置文件方式始终不生效,可直接在代码中全局设置重试逻辑,无需依赖配置文件:

// 在Program.cs的应用启动代码中添加
using Microsoft.Data.SqlClient;

// 全局设置连接重试(指数退避)
SqlConnection.RetryLogicProvider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(
    new SqlRetryLogicOption
    {
        NumberOfTries = 5,
        DeltaTime = TimeSpan.FromSeconds(3),
        MaxTime = TimeSpan.FromSeconds(45)
    });

// 全局设置命令重试(增量退避)
SqlCommand.RetryLogicProvider = SqlConfigurableRetryFactory.CreateIncrementalRetryProvider(
    new SqlRetryLogicOption
    {
        NumberOfTries = 4,
        DeltaTime = TimeSpan.FromSeconds(2),
        MaxTime = TimeSpan.FromSeconds(30)
    });

该方式直接覆盖默认重试逻辑,适用于.NET 6+应用,且Dapper操作会自动继承SqlConnection的重试配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:40