自动重试System.Net.Http.HttpClient

时间:2017-09-14 06:44:21

标签: c# dotnet-httpclient

我知道实体框架具有“连接弹性和重试逻辑”机制,可以处理不可靠的网络。

System.Net.Http.HttpClient还有这样的东西吗? 所以这是一种自动重试机制,所以当连接丢失或发生超时时,它将重试x次。

这可能吗?

1 个答案:

答案 0 :(得分:0)

据我所知,没有这样的机制。但是你可以自己写一个事件,检查所有连接x毫秒。 像

public class CheckInternet
{
    public CheckInternet()
    {
        Timer t1 = new Timer();
        t1.Interval = 1000;
        t1.Tick += T1_Tick;
        t1.Start();
    }

    private void T1_Tick(object sender, EventArgs e)
    {
        var ping = new System.Net.NetworkInformation.Ping();
        var result = ping.Send("www.google.com");
        if (result.Status != System.Net.NetworkInformation.IPStatus.Success)
        {
            // Your code to reconnect here
        }
    }
    public event EventHandler CheckConnectivity;
    private void OnCheckConnectivity()
    {
        CheckConnectivity?.Invoke(this, new EventArgs());
    }
}

现在只需将其实现到其他类使用

CheckInternet cki = new CheckInternet();
cki.CheckConnectivity += new cki_CheckConnectivity;