gpt4 book ai didi

c# - 如何指定用于 WebClient 类的 SSL 协议(protocol)

转载 作者:IT王子 更新时间:2023-10-29 04:05:58 27 4
gpt4 key购买 nike

我有一个使用 HTTPS POST 将数据发送到服务器的应用程序。我使用 System.Net.WebClient 对象来执行此操作。这是一个发送一些数据的函数:

    private byte[] PostNameValuePairs(string uri, NameValueCollection pairs)
{
byte[] response;
String responsestring = "";
using (WebClient client = new WebClient())
{
client.Headers = GetAuthenticationHeader();

string DataSent = GetNameValueCollectionValuesString(pairs);

try
{
response = client.UploadValues(uri, pairs);
responsestring = Encoding.ASCII.GetString(response);
}
catch (Exception e)
{
responsestring = "CONNECTION ERROR: " + e.Message;
return Encoding.ASCII.GetBytes(responsestring);
}
finally
{
_communicationLogger.LogCommunication(uri, client.Headers.ToString(), DataSent, responsestring);
}
}

return response;
}

我们传入一个以 https://开头的 URI

这已经运行了很长时间。今天,我们开始收到以下连接错误:“基础连接已关闭:发送时发生意外错误”。我们与服务器所有者进行了一些故障排除,他们最终将范围缩小到了以下几点。他们更改了服务器以阻止 TLS 1.0,并表示我们现在需要使用 TLS 1.1 或 1.2 发送数据。

我需要在我的 WebClient 对象(或我的函数中的其他地方)中设置什么才能使其使用 TLS 1.1 或 1.2 而不是 TLS 1.0?

如果有差异,我们将使用 .NET Framework 4.5。

最佳答案

根据建议的其他问题,我能够通过在我的代码中添加以下行来解决它:

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

这从客户端禁用了 TLS 1.0,然后服务器接受了连接。

希望这对遇到同样问题的其他人有所帮助。虽然答案与其他问题相似,但从所问的问题中看不出是这种情况,所以我不认为这是重复的。

关于c# - 如何指定用于 WebClient 类的 SSL 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30491716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com