【发布时间】:2015-01-14 22:32:24
【问题描述】:
我有一个 Web API,它必须与几个不同的服务进行通信。目前,我已将 Web API 设置为使用以下安全协议:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
当 API 通过HttpClient(比如 Twitter)调用另一个服务时,它将使用该协议。然而,与此同时,另一个请求可能会从云中访问某些内容,无论出于何种原因,目前都需要 TLS(不是 TLS 1.2)。向云端发出的请求在发出之前再次设置安全协议:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
我遇到的问题是,当两个单独且唯一的请求进入时,一个用于 Twitter,一个用于云,安全协议可能会在发送之前切换到“错误的”,导致请求失败。
有没有办法在每个请求的HttpClient 上设置安全协议,这样我就不会在某个地方的某个单例中交换设置?
【问题讨论】:
-
对于遇到此问题但仍然卡住的任何人,我决定使用 AppDomain 将请求隔离到奇数服务器,从而为每个请求启用安全协议切换。 superstarcoders.com/blogs/posts/…
-
Porschiey,您的示例没有使用 HttpClient 显示这一点,这不是一个简单的类。请给个具体的例子使用HttpClient好吗?
标签: c# http ssl asp.net-web-api