HTTP становится HTTPS становится HTTP...
Привет всем,
Возможно, этот вопрос немного странный... Я делаю все возможное, чтобы объяснить эту проблему.
Итак, у нас есть служба REST (C# MVC Web API), работающая по адресу http://something.com/api.
В другом веб-проекте MVC мы делаем некоторые вызовы сервиса примерно следующим образом:
using (HttpClient client = new HttpClient()) { HttpResponseMessage response = client.GetAsync("some_uri").Result; if (response.IsSuccessStatusCode) { return response.Content.ReadAsAsync<T>().Result; } else { // Handle error... } }Пока все идет хорошо, все работает нормально.
URI исходит из конфигурационного файла и, как уже было сказано, представляет собой что-то вроде http://something.com/api.
Все хорошо, пока вдруг не перестает.
Что происходит, так это то, что служба становится недоступной до тех пор, пока я не изменю URI в конфигурации на httpS://something.com/api.
И это работает некоторое время, пока вдруг я не должен изменить его обратно на http (без S)...
Я думаю, что это, должно быть, проблема на стороне клиента, потому что на прошлой неделе у меня была эта проблема, и мне пришлось переключиться на httpS, в то время как коллега мог продолжать работать над http. Двое моих коллег испытывают ту же проблему. Кажется, нет никакого очевидного триггера, который делает изменение на HTTP(S).
Пожалуйста, не говорите мне, что я должен все время использовать httpS, это бесполезно.
Я пробовал гуглить, но все, что я могу найти, - это кэширование браузера, HSTS и редиректы, но это не может быть проблемой (очевидно, мы не используем HSTS или редиректы, и я не уверен, как кэширование браузера вызовет эту проблему).
Любые идеи о том, что может быть причиной этого, приветствуются.
Спасибо!
Что я уже пробовал:
Гуглить этот вопрос безрезультатно.
F-ES Sitecore
Сервер находится в веб-ферме или балансировщике нагрузки?
Sander Rossel
Нет, просто сервер, который у нас где-то стоит (хотя я не могу получить доступ к оборудованию).
Richard Deeming
Но ты должен используйте HTTPS все время! :P
Какую ошибку вы получаете, когда запрос терпит неудачу?
Вы пробовали запрашивать URL-адрес в браузере, когда он не работает? Возможно, используя что-то вроде Скрипач[^] для отслеживания запросов.
Вы проверили журналы событий на сервере, на котором размещен API?
Sander Rossel
Я получаю следующую ошибку: произошла одна или несколько ошибок. - - - > System.Net.Http. HttpRequestException: произошла ошибка при отправке запроса.- - - > System.Net.WebException: не удалось подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: соединение не может быть установлено, потому что целевая машина активно отказалась от него
Исчез, когда я сменил HTTP на HTTPS. Пока я не получу его снова и мне не нужно будет изменить HTTPS обратно на HTTP.
Я ничего не могу найти на сервере.
Я не пробовал запрашивать его с помощью браузера. Я попробую, когда ошибка повторится.
ZurdoDev
Как сказал Ричард, вы должны использовать https, если включен ssl. Но это звучит как проблема с сетью или сервером, поэтому я не уверен, что мы можем сделать, чтобы помочь.
Sander Rossel
Я думал, что это тоже что-то с сервером или сетью, но поскольку у других людей нет этой проблемы (в то же время), это кажется локальной проблемой.
ZurdoDev
Например?
Что это вообще может быть? (Да, я знаю, именно поэтому вы спрашиваете.)
Когда проблема возникает, попробуйте ввести url-адрес в браузере.