.NET HttpClient 在非控制台应用程序中不会超时
.NET HttpClient does not timed out for in non console app
我需要 运行 ASP.NET WebAPI (.NET Framework 4.6.1) 应用程序在防火墙后面的网络中,我需要调用一些 APIs 托管在该网络之外。我可以在同一台机器上用 Postman 命中那些 API,没有任何问题,但是 HTTP 客户端 GetAsync 方法超时并失败。
我已经使用 Visual Studio 模板创建了多个应用程序并将以下代码放入其中(基本上没有期望模板代码和以下行):
var c = new HttpClient();
var r = await c.GetAsync("https://google.com");
以上代码适用于 .NET Framework 4.6.1 控制台应用程序,但适用于所有其他应用程序类型,包括:
- ASP.NET Web 应用程序 .NET Framework 4.6.1
- ASP.NET 核心 Web 应用程序 2.2
- .NET 核心控制台应用程序 2.2
我也试过使用下面的代码绕过 SSL 证书,但没有成功。
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
肯定是网络上的某些东西导致了这个问题,但是,请问这是如何在 .NET Framework 中而不是在任何其他框架中工作的?
我已经厌倦了 public 个像 google.com 这样的网站,但我得到了同样的结果。
有人 运行 有同样的问题吗?关于如何调试它有什么建议吗?
我可以找到 .NET Framework Web 应用程序的解决方案。通过在 web.config 中添加以下内容,将设置默认代理。
<system.net>
<defaultproxy/>
<system.net>
参考:
Configure the Hypertext Transfer Protocol (HTTP) proxy server
但我还没有适用于 .NET Core 应用程序的可行解决方案。
2020 年 4 月 9 日更新
我可以在 .NET Core 2.x 中修复该问题,但设置配置但此问题已在 .NET Core 3.x 中修复。现在HttpClient默认使用默认代理。
我需要 运行 ASP.NET WebAPI (.NET Framework 4.6.1) 应用程序在防火墙后面的网络中,我需要调用一些 APIs 托管在该网络之外。我可以在同一台机器上用 Postman 命中那些 API,没有任何问题,但是 HTTP 客户端 GetAsync 方法超时并失败。
我已经使用 Visual Studio 模板创建了多个应用程序并将以下代码放入其中(基本上没有期望模板代码和以下行):
var c = new HttpClient();
var r = await c.GetAsync("https://google.com");
以上代码适用于 .NET Framework 4.6.1 控制台应用程序,但适用于所有其他应用程序类型,包括:
- ASP.NET Web 应用程序 .NET Framework 4.6.1
- ASP.NET 核心 Web 应用程序 2.2
- .NET 核心控制台应用程序 2.2
我也试过使用下面的代码绕过 SSL 证书,但没有成功。
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
肯定是网络上的某些东西导致了这个问题,但是,请问这是如何在 .NET Framework 中而不是在任何其他框架中工作的? 我已经厌倦了 public 个像 google.com 这样的网站,但我得到了同样的结果。 有人 运行 有同样的问题吗?关于如何调试它有什么建议吗?
我可以找到 .NET Framework Web 应用程序的解决方案。通过在 web.config 中添加以下内容,将设置默认代理。
<system.net>
<defaultproxy/>
<system.net>
参考: Configure the Hypertext Transfer Protocol (HTTP) proxy server
但我还没有适用于 .NET Core 应用程序的可行解决方案。
2020 年 4 月 9 日更新
我可以在 .NET Core 2.x 中修复该问题,但设置配置但此问题已在 .NET Core 3.x 中修复。现在HttpClient默认使用默认代理。