Por*_*iey 15 c# ssl http asp.net-web-api
我有一个Web API,必须与几个不同的服务进行通信.目前,我将Web API设置为使用以下安全协议:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
当API通过HttpClient(比如Twitter)调用另一个服务时,它将使用该协议.然而,与此同时,另一个请求可能会从云访问某些内容,无论出于何种原因,目前需要TLS(而不是TLS 1.2).在发出之前,对云的请求再次设置安全协议:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
我遇到的问题是当两个独立且唯一的请求进入时,一个用于Twitter,一个用于云,安全协议可能在发送之前切换到"错误的",导致请求失败.
有没有办法在HttpClient每个请求上设置安全协议,这样我就不会在某个单独的某个地方交换设置?
小智 13
您无需进行设置.
您可以使用:
using System.Net;
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)
补充说明:
似乎没有办法做到这一点。该SecurityProtocol属性仅在内部TlsStream类中的某个位置使用:

TlsStream 似乎支持所有内部TLS连接,例如HTTP,FTP和SMTP。
我曾经希望ServicePoint您可以配置它。对于许多设置,ServicePointManager仅提供默认设置。那个希望是没有根据的。
因此,这有力的证据证明这是不可能的。不过,这还没有证据。
你该怎么办?我将关闭您正在与之通信的奇数服务器的HTTP客户端库。HTTP不是特别复杂的协议。我确定还有其他一些实现。
或者,使用代理来终止您自己服务器上的HTTPS连接。.NET然后仅处理HTTP。
| 归档时间: |
|
| 查看次数: |
9828 次 |
| 最近记录: |