2014-10-15 16 views
13

W C# Jestem w stanie ustawić wartość statyczną dla SSL3 lub TLS, np.Ustawienie wartości żądania dla ServicePointManager.SecurityProtocol

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 

Lub:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 

Ale (wierzę) to wpłynie na całą przyszłość HttpWebRequest obiektów w mojej aplikacji.

Czy istnieje sposób ustawienia tego dla danego HttpWebRequest lub przynajmniej dla danego identyfikatora URI?

Uwaga Widziałem to:

Uri uri = new Uri(url); 
ServicePoint sp = ServicePointManager.FindServicePoint(uri); 

Ale Servicepoint nie posiada własności SecurityProtocol.

Obecnie myślę, że będę musiał ustawić statyczną właściwość globalną przed utworzeniem nowego HttpWebRequest.

To nie w porządku, a to oznacza również:

  • muszę mieć pewność, że wiele wątków nie robią tego w tym samym czasie.
  • Nie jestem pewien, do jakiego punktu to ustawienie zostało "użyte" (tj. Czy jest to, gdy wywoływam webRequest.GetResponse(), że usługa ServicePointManager.SecurityProtocol jest dostępna i związana z tym identyfikatorem URI?).

Odpowiedz

2

sobie z tego sprawę został pokryty tutaj:

How to use SSL3 instead of TLS in a particular HttpWebRequest?

And tutaj:

Set the SecurityProtocol (Ssl3 or TLS) on the .net HttpWebRequest per request

Potwierdzając moje obawy. Niektórzy użytkownicy wydają się obracać oddzielną domeną aplikacji, aby obejść ten problem. Nadal uważam, że może to być możliwe z pewnym blokowaniem wątków, jeśli zostało dobrze zdefiniowane, w którym momencie ustawienie jest powiązane z konkretnym obiektem żądania WWW.

Powiązane problemy