我将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相同。 如何避免该异常?