Хорошо, это действительно странный вопрос, и я даже не знаю, как его правильно описать. У нас был клиент, который жаловался, что конкретная страница на нашем веб-сайте не работает, и один из наших внутренних технических специалистов также смог воспроизвести проблему. Большая часть сайта работает нормально. Это развернуто в службе приложений Azure.
Я проверил запуск той же страницы, что и техник, и у меня все сработало. Весь запрос идентичен, за исключением файлов cookie аутентификации. Когда я запускаю запрос, я получаю 200 OK, но техник и заказчик получают 404 NOT FOUND.
Проблема возникла только после того, как сегодня утром мы провели обмен VIP-файлами в службе приложений Azure (в которой я новичок). Сегодня утром я развернул служебное обновление для обмена промежуточным развертыванием, а через несколько минут сделал VIP-обмен. Я думаю, что и клиент, и технический специалист открыли свой браузер и активировали сеанс во время VIP-обмена.
Я устранил неполадки и вот что обнаружил. Я могу использовать Fiddler для записи точного следа веб-страницы, которая мне подходит. Затем я могу скопировать только одно значение из запроса для технического специалиста, который получает ошибку 404, и внезапно я также могу воспроизвести ошибку 404. Разница в одном файле cookie:
Cookie: ARRAffinity=blahblahblahblah;
Насколько я понимаю, это ключ для определения того, к какому серверу подключается пользователь, чтобы он мог быть привязан к конкретному экземпляру в наборе с балансировкой нагрузки (2 сервера). Мы смогли решить эту проблему, попросив технического специалиста и клиента удалить все файлы cookie в своем браузере, но даже выход из системы и повторный вход не решат проблему.
Почему «устаревший» ключ соответствия может вызывать случайное сообщение 404 на одной конкретной странице? Возможно ли, что некоторые запросы пользователей действительно направляются на старый сайт промежуточного развертывания, даже если они попадают на URL-адрес, который подключается к сайту развертывания в производственной среде?
Здесь есть 2 вещи:
Пожалуйста, дайте нам знать, что произошло в конце.