Установка значения для запроса для ServicePointManager.SecurityProtocol
В С# я могу установить статическое значение для 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 за запрос
Подтверждая мои страхи. Некоторые пользователи, похоже, разворачивают отдельный домен приложения, чтобы обойти это. Я по-прежнему думаю, что это возможно при некоторой блокировке потока, если она была четко определена в какой момент параметр привязан к определенному объекту веб-запроса.