HttpClient client.GetAsync可在完整的.Net框架中工作,但不能在.Net core 2.1中工作?

时间:2018-08-03 19:04:51

标签: c# .net .net-core httpclient

我的公司网络中正在运行以下代码(需要将C#更改为7.1+版本)。它可以在完整的.Net框架中工作,但不能在.Net core 2.1应用程序中工作?为什么? (检查https站点的证书将显示某些证书是由我公司颁发的)

public static async Task Main(string[] args)
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    var client = new HttpClient();
    var response = await client.GetAsync("https://usbtrustgateway.usbank.com/portal/");
    response.EnsureSuccessStatusCode();
    var content = await response.Content.ReadAsStringAsync();
    Console.WriteLine(content);
}

.Net核心中的行client.GetAsync(...)出现以下异常

  

引发的异常:System.Private.CoreLib.dll中的'System.Net.Http.HttpRequestException'(“无法建立SSL连接,请参阅内部异常。”)引发的异常:'System.Net.Http.HttpRequestException 'in System.Private.CoreLib.dll中(“无法建立SSL连接,请参阅内部异常。”)超链接:激活历史调试0.95s [15948]工作线程

内部异常是

  

远程主机强行关闭了现有连接

1 个答案:

答案 0 :(得分:0)

我已经关注这个线程有一段时间了,我很好奇以下内容是否可以解决该问题。 .Net Core遇到了类似的问题。

在您的appsettings.json中,尝试添加...

“ DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER”:“ 0”

示例:

"profiles": {
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "https://localhost:44349/",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development",
    "DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER": "0"
  }
},