Я написал веб-приложение ASP. NET Core 3.1 MVC. Это интерфейс, вызывающий серверную часть веб-API.
Приложение отлично работает при разработке и постановке.
Я не могу заставить его работать в производственной среде: веб-API выглядит нормально, я могу вызовите его из браузера или почтальона.
Но я не могу связаться с ним из своего веб-приложения. Это ошибка из журнала при попытке выполнить вызов:
информация: System. Net .Http.HttpClient.IApiClient.ClientHandler [100]
Отправка HTTP-запроса GET https://webapi. ****. It / inetApi / api / links
сбой: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]
Произошло необработанное исключение при выполнении запроса.
System. Net .Http.HttpRequestException: не удалось установить SSL-соединение, см. внутреннее исключение.
System.IO.IOException: невозможно прочитать данные из транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом ..
System. Net .Sockets.SocketException (10054): существующее соединение было принудительно закрыто удаленным хостом.
--- Конец внутренней трассировки стека исключений ---
Обе машины для промежуточной обработки и производства - это Windows машины server 2019 с веб-сервером IIS10. где и веб-API, и веб-приложение запускается как приложения:
Web-t.****.it/inetApi
Web-t.****.it/inetW
Производственная виртуальная машина имеет два веб-сайта, один должен быть для внутренних веб-приложений, а другой - для API:
webapi.****.it/inetApi
intranet.****.it/inetW
Мы создали эту виртуальную машину из царапина, она новая, на ней нет других приложений или веб-сайтов.
Я уже пытался переместить приложение веб-API на тот же веб-сайт веб-приложения, чтобы проверить, может ли это быть проблемой, но это не так.
Я пытался заставить веб-приложение использовать TLS в качестве протокола безопасности, используя это в моем startup.cs:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
Но это только меняет ошибку:
информация: System. Net .Http.HttpClient.IApiClient.ClientHandler [100]
Отправка HTTP-запроса GET https://webapi. ****. It / inetApi / api / links
сбой: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]
Произошло необработанное исключение при выполнении запроса.
Система. Net .Http.HttpRequestException: произошла ошибка при отправке запроса.
Sys tem. Net .Http.WinHttpException (80072EFF, 12030): ошибка 12030 при вызове WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, «Соединение с сервером было аварийно прервано».
в System.Threading.Tasks.RendezvousAwaesult ( )
в системе. Net .Http.WinHttpHandler.StartRequestAsyn c (состояние WinHttpRequestState)
--- Конец трассировки стека внутреннего исключения ---
Итак, я попробовал для вызова производственного веб-API из веб-приложения при постановке или разработке, и он работает.
Затем я попытался использовать веб-приложение на производстве с промежуточным веб-API ... и оно тоже работает!
Это сводит меня с ума.
Как будто все в продакшене работает индивидуально, но не вместе.
У меня есть гранты, чтобы делать все, что мне нужно на виртуальных машинах ... но Я разработчик (и не очень хорошо разбираюсь в системах), и я не могу просить большой помощи у системных администраторов, потому что они перегружены в этот период.
Есть идеи?