在c#中,我可以为SSL3或TLS设置静态值,例如
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
或者:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
但是(我相信)这会影响我应用程序中所有未来的HttpWebRequest对象。
有没有办法为给定的HttpWebRequest或至少为给定的URI设置此值?
注意我已经看到了这个:
Uri uri = new Uri(url);
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
但ServicePoint没有SecurityProtocol属性。
目前我认为我必须在创建新的HttpWebRequest之前设置静态全局属性。
这感觉不对,这也意味着:
答案 0 :(得分:4)
意识到这已经包含在这里:
How to use SSL3 instead of TLS in a particular HttpWebRequest?
在这里:
Set the SecurityProtocol (Ssl3 or TLS) on the .net HttpWebRequest per request
确认我的恐惧。一些用户似乎正在启动一个单独的应用程序域来解决此问题。我仍然认为,如果在设置绑定到特定Web请求对象的哪个位置进行了很好的定义,则可能会有一些线程锁定。