有没有办法在单个应用程序中为一个 WCF 调用指定 TLS 1.0,为另一个 WCF 或 WebClient 调用指定
本文关键字:WCF 调用 TLS WebClient 另一个 单个 应用程序 有没有 一个 | 更新日期: 2023-09-27 17:56:54
我有一个需要调用多个 Web 服务的应用程序。一个 Web 服务仅适用于 TLS 1.0。另一个禁用了 TLS 1.0。
有没有办法指定您希望在每个 WCF Web 服务调用上使用哪个 TLS 版本?
我可以使用
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
但它似乎全面强制了这种设置。
.net 4.5.2
示例代码:
using System;
using System.Net;
namespace SSLTest
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Test();
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
Test();
}
Console.ReadKey();
}
static void Test()
{
try
{
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol);
WebClient client = new WebClient();
client.DownloadFile("https://webservices2.autotask.net/atservices/1.5/atws.wsdl", @"c:'code'test.wsdl");
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
输出:
Tls12
System.Net.WebException: The request was aborted: Could not create SSL/TLS secur
e channel.
at System.Net.WebClient.DownloadFile(Uri address, String fileName)
at System.Net.WebClient.DownloadFile(String address, String fileName)
at SSLTest.Program.Test() in c:'code'sandbox'SSLTest'SSLTest'SSLTest'Program.
cs:line 28
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
Tls12
Tls
您可以指定多个安全协议,如下所示:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;