WebRequest在WinHttpGetProxyForUrl()

时间:2018-07-23 17:47:13

标签: c#

我将JsonHttpClient用于Web请求。一些请求执行得很好(有时不是第一个),然后我最终在请求上得到TaskCanceledException。 这些请求全部发送到本地网络中的服务器。 我的电脑是具有Win7 64位和VS2017的AMD Ryzen。

调试代码后,看起来System.Net.WinHttpWebProxyFinder.WinHttpGetProxyForUrl挂起2分钟,然后发生异常。没有请求开始(已通过Wireshark检查)。

Debug VS2017 在异常之后的下一个查询中,该功能将正常运行。

如果我在另一个程序(curl,浏览器)出现问题时开始查询,则我的程序将被解除阻止并且查询将再次运行。

用于调用请求的代码如下所示,位于dll中,是从具有不同端点的NUnit3(NUnit3TestAdapter v3.10.0)测试中调用的。 注释掉的代码是每个创建新客户端请求的尝试,但没有改变行为。

public string PostRsRest(string url, string content = "")
{
    try
    {
        //testClient = new JsonHttpClient($"http://{Ip}:{Port}");
        //testClient.GetHttpClient().Timeout = new TimeSpan(TimeOut);
        var response = testClient.Post<string>(url, content);
        RestLogger.Info("post request for: " + url + " returns: " + response);
        //testClient.Dispose();
        return response;
    }
    catch (WebException webException)
    {
        RestLogger.Error("Post error, url: " + url + "  message: " + webException.Message);
        return webException.Message;
    }
    catch (HttpRequestException reqException)
    {
        RestLogger.Error("Post error, url: " + url + "  message: " + reqException.Message);
        return reqException.Message;
    }
    catch (TaskCanceledException taskCexception)
    {
        RestLogger.Error("Post error, url: " + url + "  message: " + taskCexception.Message);
        if (taskCexception.InnerException != null)
        {
            RestLogger.Error("Post error, url: " + url + "  meassage: " + taskCexception.InnerException.Message);
        }
        return taskCexception.Message;
    }
}

.Net HttpClient的测试没有变化。与.Net 4.7.1相同。 如何避免该异常?

0 个答案:

没有答案
相关问题