我的应用程序(.net 3.5 sp1)使用 HttpWebRequest 与不同的端点进行通信,有时通过 HTTPS 进行通信,其中每个托管服务器可能有不同的安全协议要求,例如 TLS 或 SSL3 或其中之一。
通常,服务器会很好地协商/回退使用 TLS 或 SSL3 的 SecurityProtocol,但有些服务器不会,并且当 .net 设置为 TLS 或 SSL3(我认为是默认值)时,那些仅支持 SSL3 的服务器会导致 .net抛出发送错误。
据我所知,.net 为 ServicePointManager 对象提供了一个属性 SecurityProtocol,可以将其设置为 TLS、SSL3 或两者。因此,理想情况下,当设置为两者时,客户端和服务器应该协商使用什么,但如前所述,这似乎不起作用。
据说您可以设置 ServicePointManager.SecurityProtocol = Ssl3,但是想要使用 TLS 的端点又如何呢?
我看到 ServicePointManager 和 SecurityProtocol 的问题是它是静态的,因此是应用程序域范围内的。
所以对于这个问题..
我将如何使用具有不同 SecurityProtocol 的 HttpWebRequest,例如
1) url 1 设置为使用 TLS | ssl3(协商)
2) url 2 设置为 Ssl3(仅限 Ssl3)
不幸的是,您似乎无法针对每个服务点进行自定义。我建议您在 MS Connect 网站上提交该领域的功能请求。
作为一种肮脏的解决方法,您可以尝试在新的应用程序域中执行需要不同安全协议的站点。静态实例是每个应用程序域的,因此这应该为您提供所需的隔离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)