Мы недавно перешли на новую платформу разработки.Мы все еще настраиваем некоторые части для всего нашего рабочего процесса, чтобы работать без проблем.У нас есть одна проблема, когда нам нужно продвинуть проект в производство, но мы продолжаем получать ошибку на сервере.Наша команда не очень хорошо разбирается в IronPython, чтобы легко решить эту проблему.
Я редактирую сценарий, связанный с этим.Оригинальный сценарий выглядит следующим образом: (Обратите внимание, что я отредактировал / удалил конфиденциальные и ненужные части)
def callWebService(URI, setProjectState):
job = jobs[0]
job.AddNote(0, job.CurrentVersion, ('%s.' % (job.Id)))
PARAMETERS='{"id": "%s", "someData": "%s"}' % (job.Id, setProjectState)
from System.Net import WebRequest
request = WebRequest.Create(URI)
request.ContentType = "application/json"
request.Method = "POST"
from System.Text import Encoding
bytes = Encoding.ASCII.GetBytes(PARAMETERS)
request.ContentLength = bytes.Length
reqStream = request.GetRequestStream()
reqStream.Write(bytes, 0, bytes.Length)
reqStream.Close()
response = request.GetResponse()
from System.IO import StreamReader
result = StreamReader(response.GetResponseStream()).ReadToEnd()
print result
return;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
callWebService('https://somesite.com/needtoposthere', 'Production')
Поддержка новой платформы сказала нам, что для решения этой проблемы нам нужно обойти проверку sslчасть, потому что только в этой части нашего рабочего процесса мы публикуем данные на URL-адрес HTTPS с момента его создания.
Я пробовал множество способов, таких как добавление кода ff:
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
pass
else:
ssl._create_default_https_context = _create_unverified_https_context
Также попытался вставить этот файл в соответствии с рекомендациями службы поддержки:
from System.Net import ServicePointManager
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
и
from System.Net import ServicePointManager
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072
Я также пытался использовать verify = false
библиотеки ssl, но все еще продолжаю получать ошибки.
Для первого решения, я получаю сообщение об ошибке: модуль ssl
не может быть импортирован.Журналы показывают ошибку module named "ssl" cannot be found".
Я попытался объявить импорт таким же, как и другие объявления импорта: from System.Net import ssl
, но все равно получаю ту же ошибку.
Для второго решения сценарий не может распознать SecurityProtocolType
, даже если ServicePointManager был успешно импортирован.
Я не понимаю, почему я не могу импортировать даже встроенные библиотеки Python (ssl
).Пожалуйста, поймите, что выложенный мною сценарий - единственный, который мы можем изменить, поскольку у нас вообще нет доступа к другим сценариям.