Сведения о проблеме:
Вызов API работает с как HTTP, так и HTTPS в консольном приложении.
В установщике MSI HTTP-запросы выполняются успешно, но HTTPS-запросы завершаются с ошибкой
Ошибка:
Произошла ошибка при настройке сервера: WebException
произошло во время вызова API:
https://{Domain}:443/api /RPA/RpaSetupLog
Состояние: ReceiveFailure
Ответ:
Сообщение: Базовое соединение было закрыто: при получении
произошла непредвиденная ошибка.
Трассировка стека: в системе .Сеть. HttpWebRequest.GetResponseO
в CustomActions. Пользовательские действия. SendDataToApi(String
protocol, String domainOrlp, String port, String jsonData,
String rootCertificateString, String
intermediateCertificateString, String
endDomainCertificateString) в
Произошло в строке: O
Итак, проблема в том, что у меня был установщик Wix, для которого у меня есть установщик MSI, и когда я пытаюсь вызвать API с протоколом https это дает мне ошибку, но в notmal http это удалось, и когда я создаю одно консольное приложение с тем же параметром и той же функцией и пытаюсь вызвать его успешно, у меня возникла проблема с https в установщике .msi, я также добавьте эту строку
Код: Выделить всё
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Проверенные сертификаты:
Убедилось, что сервер использует действительный сертификат. Для самозаверяющих сертификатов я вручную установил корневой, промежуточный и доменный сертификаты в хранилище сертификатов производственной системы.
Протестировано в различных средах:
На моем локальном компьютере и консольное приложение, и установщик MSI работают нормально.
В производственной системе:
Консольное приложение работает как для HTTP, так и для HTTPS.
Установщик MSI не работает для HTTPS.
Сетевое подключение:
Проверено, что рабочая система может разрешить и пропинговать домен API.
HTTP-запросы от установщика MSI успешны, что указывает на доступ к сети имеется.
Код: Выделить всё
Code :
private static bool SendDataToApi(string protocol, string domainOrIp, string port, string jsonData)
{
string apiUrl = $"{protocol}://{domainOrIp}:{port}/api/RPA/RpaSetupLogs";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
request.Method = "POST";
request.ContentType = "application/json";
request.Timeout = 30000;
// Enable TLS 1.2
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Bypass SSL Validation (Tried this as a workaround)
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(jsonData);
writer.Flush();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new InvalidOperationException($"API call failed with status: {response.StatusCode}");
}
}
return true;
}
catch (WebException webEx)
{
Console.WriteLine($"WebException: {webEx.Message}, Status: {webEx.Status}");
throw;
}
}
Сведения о среде:
- Локальная система >:
Windows 10 - .NET Framework 4.8
- HTTPS работает как в консольном приложении, так и в установщике MSI.
< /ul> - Производственная система:
Windows Server 2019 - HTTPS работает в консольном приложении, но не работает в установщике MSI.
- HTTP отлично работает как в консольном приложении, так и в установщике MSI.
В чем мне нужна помощь:
- < li>Почему HTTPS-запрос не выполняется в установщике MSI, но работает в консольном приложении?
- Может ли это быть связано с контекст выполнения, разрешения или настройки среды установщика? Если да, то как мне отладить или решить эту проблему?
- Требуются ли специальные конфигурации, чтобы установщик WiX поддерживал вызовы HTTPS во время установки?< /p>
Подробнее здесь: https://stackoverflow.com/questions/792 ... onsole-app