Sander Rossel Ответов: 1

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-адрес в браузере.

1 Ответов

Рейтинг:
12

Sander Rossel

Это было VPN-соединение, которое перенаправляет все на HTTPS...
Обычно я не пользуюсь VPN, но в последнее время он мне то и дело нужен.
Я чувствую себя глупо, потому что не замечаю этого сейчас...
Во всяком случае, я рад, что знаю, в чем проблема.