gpt4 book ai didi

c# - 有没有办法在单个应用程序中为一个 WCF 调用指定 TLS 1.0,为另一个 WCF 或 WebClient 调用指定 TLS 1.2?

转载 作者:行者123 更新时间:2023-11-30 17:37:12 25 4
gpt4 key购买 nike

我有一个应用程序需要调用多个网络服务。一项 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

最佳答案

您可以像这样指定多个安全协议(protocol):

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;

关于c# - 有没有办法在单个应用程序中为一个 WCF 调用指定 TLS 1.0,为另一个 WCF 或 WebClient 调用指定 TLS 1.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38361733/

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