首页 > 解决方案 > C# 控制台应用程序 WebClient 返回“底层连接已关闭:发送时发生意外错误”

问题描述

我有一个在.NET framework 4.7.2上编写的控制台应用程序,该应用程序在 Microsoft Windows server 2016上运行,最近升级到新的 server 2019。升级后,我的应用程序停止工作并抛出异常“底层连接已关闭:发送时发生意外错误”。我研究并使用了多种解决方案,但仍然总是遇到相同的异常。使用了安全协议也使用了HttpResponse类型而不是使用WebClient

`System.Net.ServicePointManager.SecurityProtocol |=  SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;`

下面是我在代码中使用的方法: 此方法使用 Key 和 secret 参数来访问和检索来自 baseUrl 的令牌响应。`

public string GenerateTokenWithKeySecret(string baseUrl, string key, string secret)
{
    System.Net.ServicePointManager.SecurityProtocol |=  SecurityProtocolType.Tls11 |
                                                   SecurityProtocolType.Tls12;
    using (var webClient = new WebClient())
    {
        var auth = Base64Encode($"{key}:{secret}");
        webClient.Headers.Add("cache-control", "no-cache");
        webClient.Headers.Add("Authorization", $"BASIC {auth}");
        webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        string response = webClient.UploadString($"{baseUrl}token", 
                                   "grant_type=client_credentials");
        var tokenResponse = JsonConvert.DeserializeObject<Response>(response);
        return tokenResponse.AccessToken;
      }
      return "";
}

`

下面是异常的截图。 在此处输入图像描述

如果您需要我提供更多信息,请告诉我。我会更乐意让这段代码与您的宝贵建议一起使用。谢谢你。

标签: c#.netwebclienttls1.2remote-server

解决方案


推荐阅读