为什么我的 C# 应用程序在此 REST 请求上会失败,但通过浏览器可以正常运行?
Why would my C# app fail on this REST request but but works fine through a browser?
我有一个 C# 应用程序,我正在通过 REST 访问一些数据,所以我传入 URL 以获取 JSON 负载。我以编程方式访问了几个不同的 URLs,它们都可以使用下面的代码正常工作 除了一个调用 .
这是我的代码:
var url = "http://theRESTURL.com/rest/API/myRequest";
var results = GetHTTPClient().GetStringAsync(url).Result;
var restResponse = new RestSharp.RestResponse();
restResponse.Content = results;
var _deserializer = new JsonDeserializer();
其中 GetHTTPClient() 使用以下代码:
private HttpClient GetHTTPClient()
{
var httpClient = new HttpClient(new HttpClientHandler()
{
Credentials = new System.Net.NetworkCredential("usr", "pwd"),
UseDefaultCredentials = false,
UseProxy = true,
Proxy = new WebProxy(new Uri("http://myproxy.com:8080")),
AllowAutoRedirect = false
});
httpClient.Timeout = new TimeSpan(0,0, 3500);
return httpClient;
}
所以正如我所说,上面的代码工作正常但是一堆不同的请求但是对于一个特定的请求,我在
.GetStringAsync(url).Result
调用错误:
无法从传输连接读取数据:现有连接被远程主机强行关闭
我在等待大约 10 分钟后收到该错误。有趣的是,如果我将无法正常工作的相同 URL 直接放入 Internet Explorer,我确实会得到 JSON 有效负载(也在大约 10 分钟后)。所以我很困惑为什么
- 它可以直接从浏览器运行正常,但在使用上面的代码时会失败。
- 它在这个请求上失败,但使用相同代码的其他请求以编程方式工作正常。
关于尝试的事情或我应该要求服务器所有者检查他们的端点以帮助诊断发生了什么的事情有什么建议吗?
如果您删除第 httpClient.Timeout = new TimeSpan(0,0, 3500);
行,问题应该可以解决,但如果请求将持续 20 分钟,您应该一直等待。
我认为这里超时不是问题,因为错误表明连接已被远程关闭并且设置的超时时间约为 58 分钟,与您的其他数字相比绰绰有余。
您是否尝试过查看请求本身?可能想用这些结果编辑您的问题。
我有一个 C# 应用程序,我正在通过 REST 访问一些数据,所以我传入 URL 以获取 JSON 负载。我以编程方式访问了几个不同的 URLs,它们都可以使用下面的代码正常工作 除了一个调用 .
这是我的代码:
var url = "http://theRESTURL.com/rest/API/myRequest";
var results = GetHTTPClient().GetStringAsync(url).Result;
var restResponse = new RestSharp.RestResponse();
restResponse.Content = results;
var _deserializer = new JsonDeserializer();
其中 GetHTTPClient() 使用以下代码:
private HttpClient GetHTTPClient()
{
var httpClient = new HttpClient(new HttpClientHandler()
{
Credentials = new System.Net.NetworkCredential("usr", "pwd"),
UseDefaultCredentials = false,
UseProxy = true,
Proxy = new WebProxy(new Uri("http://myproxy.com:8080")),
AllowAutoRedirect = false
});
httpClient.Timeout = new TimeSpan(0,0, 3500);
return httpClient;
}
所以正如我所说,上面的代码工作正常但是一堆不同的请求但是对于一个特定的请求,我在
.GetStringAsync(url).Result
调用错误:
无法从传输连接读取数据:现有连接被远程主机强行关闭
我在等待大约 10 分钟后收到该错误。有趣的是,如果我将无法正常工作的相同 URL 直接放入 Internet Explorer,我确实会得到 JSON 有效负载(也在大约 10 分钟后)。所以我很困惑为什么
- 它可以直接从浏览器运行正常,但在使用上面的代码时会失败。
- 它在这个请求上失败,但使用相同代码的其他请求以编程方式工作正常。
关于尝试的事情或我应该要求服务器所有者检查他们的端点以帮助诊断发生了什么的事情有什么建议吗?
如果您删除第 httpClient.Timeout = new TimeSpan(0,0, 3500);
行,问题应该可以解决,但如果请求将持续 20 分钟,您应该一直等待。
我认为这里超时不是问题,因为错误表明连接已被远程关闭并且设置的超时时间约为 58 分钟,与您的其他数字相比绰绰有余。
您是否尝试过查看请求本身?可能想用这些结果编辑您的问题。