gpt4 book ai didi

c# - 在多线程环境中调用具有不同证书类型的多个 Web 服务

转载 作者:可可西里 更新时间:2023-11-01 09:15:31 25 4
gpt4 key购买 nike

我的问题:

我有一个网络应用程序 (.NET 4.5.1) 对外部网络服务进行多次调用。一些服务仅通过 SSL 进行通信,而其他服务仅通过 TSL 进行通信。

我知道,出于某种原因,ServicePointManager.SecurityProtocol 可以为 appdomin 静态全局设置(我不知道为什么它是全局的),但是由于可以同时对不同线程中的不同外部服务进行多次调用 -我不能只为每次服务调用更改应用程序域的 SecurityProtcol。

问题:

我应该如何在多线程网络应用程序环境中处理这个问题?我是否应该在可以设置 SecurityProtocol 的不同应用程序域中生成服务调用?如果是这样 - 我应该怎么做?

最佳答案

我遇到了这个问题并找到了适合我的解决方案。

我只是使用 ServicePointManager 来处理连接证书

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);

private bool ValidateRemoteCertificate(object Sender, X509Certificate Certificate, X509Chain Chain, SslPolicyErrors PolicyErrors)
{
...
}

为了处理不同的请求,我有一个将服务器 URL 映射到任务的字典。每个任务都是异步运行的,这意味着我不必直接处理线程,在每个任务中我最终使用了 System.Net 对象。即,HttpWebRequestFtpWebRequestSmtpWebRequest。它们每个都有启用/禁用 SSL 连接的属性,但它们都使用相同的方法来验证证书。

关于c# - 在多线程环境中调用具有不同证书类型的多个 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928557/

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