c# - 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 "";
}
`
如果您需要我提供更多信息,请告诉我。我会更乐意让这段代码与您的宝贵建议一起使用。谢谢你。
解决方案
推荐阅读
- amazon-web-services - 无服务器部署失败
- jquery - 如何使用 $(this) 在附加的类上发生点击事件;
- django - 如何在detailview中获取主键并用于预填充表单中的隐藏字段?
- php - 为特定用户显示单个资源
- javascript - 如何遍历数组中的值以匹配对象中的值并返回相应的对象?
- macos - MacOS 公证和第三方库
- python - mpi4py (setup.py) 的构建轮...安装 stable_baselines 时出现错误消息
- java - 如何将 Jsoup 输出存储在 ArrayList 中?
- c++ - OpenCV 代码不适用于特定图像
- excel - 如果满足条件,如何编写复制数据的代码