C# 为什么我通过HttpClient调用API时会出现服务器超时,但Postman没有问题?
我试图向RESTful服务发出C# 为什么我通过HttpClient调用API时会出现服务器超时,但Postman没有问题?,c#,rest,web-services,dotnet-httpclient,C#,Rest,Web Services,Dotnet Httpclient,我试图向RESTful服务发出GET请求,但.NETHttpClient接收到超时,但通过邮递员,这会在几秒钟内返回预期的响应(错误响应,因为我尚未“登录”) 我所尝试的: 我已经检查了网址是相同的,他们是 我认为邮递员的自动标题可能是问题所在,但在HttpClient中设置这些标题后,我仍然收到一个超时 如果我在HttpClient上增加超时,我仍然会从服务器获得超时((504)网关超时) Client=新的HttpClient(新的HttpClientHandler() { Automati
GET
请求,但.NETHttpClient
接收到超时,但通过邮递员,这会在几秒钟内返回预期的响应(错误响应,因为我尚未“登录”)
我所尝试的:
HttpClient
中设置这些标题后,我仍然收到一个超时HttpClient
上增加超时,我仍然会从服务器获得超时((504)网关超时
)Client=新的HttpClient(新的HttpClientHandler()
{
AutomaticDecompression=System.Net.DecompressionMethods.GZip
});
var objTask=Client.GetStringAsync(objUrl);
objTask.Wait();
strResponse=objTask.Result;
strResponse=Client.GetStringAsync(objUrl.Result);
为什么我通过HttpClient收到超时
注:
我们的WebApi正在调用我们的WCF服务,而WCF服务又通过HttpClient调用第三方RESTful服务——出于安全原因,我不能直接从我们的WebApi控制器调用第三方API。该网站基于.NET 4.0框架。在@jdweng和@gunr217的大量帮助下,我意识到问题是由于自托管WCF服务的
App.Config
中存储的代理造成的。如果我把这个评论掉了,我就不会有超时问题了
HttpClient
构造函数可以接受一个HttpClientHandler
,它有一个Proxy
属性,您可以绕过本地代理,如下所示:
返回新的HttpClient(新的HttpClientHandler()
{
AutomaticDecompression=System.Net.DecompressionMethods.GZip,
Proxy=newwebproxy()
{
旁路ProxyOnLocal=true
}
})
{
BaseAddress=新Uri(“https:\\my.service”)
};
您的计算机是否有邮递员忽略的代理?还可以查看代理字符串。@gunr217它确实有一个代理,我不知道邮递员会忽略它。我现在检查一下。@gunr2171谢谢你,但不幸的是,这似乎不是问题所在。在我启用的设置中,另一个调试技巧是使用网络流量监视器(如Fiddler)来检查http请求/响应。您可以比较邮递员的回复和您的代码,以查看差异。@gunr217这是一个很好的提示。非常感谢。