Установка значения запроса для ServicePointManager.SecurityProtocol
В 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.
Это не правильно, и это также означает:
- Я должен убедиться, что несколько потоков не делают это одновременно.
- Я не уверен, в какой момент этот параметр был "использован" (т. Е. Когда я вызываю webRequest.GetResponse(), что ServicePointManager.SecurityProtocol доступен и привязан к этому URI?).
1 ответ
Понял, что это было описано здесь:
Как использовать SSL3 вместо TLS в конкретном HttpWebRequest?
И здесь:
Установите SecurityProtocol (Ssl3 или TLS) в.net HttpWebRequest для каждого запроса.
Подтверждая мои страхи. Некоторые пользователи, кажется, раскручивают отдельный домен приложения, чтобы обойти это. Я все еще думаю, что это могло бы быть возможно с некоторой блокировкой потока, если бы она была четко определена, в какой момент настройка связана с конкретным объектом веб-запроса.