#asp.net #iis #http-status-code-404 #jpeg
#asp.net #iis #http-status-code-404 #jpeg
Вопрос:
Я создал веб-сайт IIS около полутора лет назад с большим количеством картинок на различных страницах с вкладками aspx / asp. Мой компьютер для разработки — Windows 8.1 Pro с веб-сайтом IIS версии 8.5.9600.16384. Веб-сайт был разработан с использованием Visual Studio 2012. Веб-сайт был опубликован на том же компьютере с Windows.
Опубликованный веб-сайт был затем скопирован на Window Server 2012R2 в IIS версии 8.5.9600.16384 web и работал хорошо. Постепенно поисковые роботы нашли сайт, и все было хорошо.
На этой неделе я зашел, чтобы внести некоторые обновления на сайт, и обнаружил, что ни одна из картинок не работает. Все они возвращают HTML-код 404. Когда я просматриваю файлы .jpg по отдельности из IIS, Firefox возвращает «невозможно отобразить, поскольку он содержит ошибки». Chrome и Edge оба говорят, что файл не может быть найден. Если я просматриваю эти файлы из проводника Windows, они выглядят нормально.
Поэтому я удалил файлы на сервере, а затем скопировал опубликованный веб-сайт со своего компьютера для разработки. По-прежнему никаких фотографий.
У меня есть другое похожее веб-приложение на том же сервере, поэтому я переместил один из файлов jpg в этот каталог и попытался просмотреть его через IIS — все еще 404. Я скопировал изображение с другого веб-сайта в свой «сломанный» каталог, а другое изображение было доступно для просмотра через IIS. Все эти фотографии были уменьшены таким же образом с помощью Photoshop 7.0.
Я вернулся на свой компьютер для разработки и просмотрел исходный веб-сайт через IIS. Изображения были доступны для просмотра, поэтому я переиздал веб-сайт, скопировал его на сервер — никаких изображений.
Затем я нашел исходное изображение (не уменьшенное) и переместил его на сервер. Все еще 404.
Похоже, моя проблема не в разрешениях, потому что я могу просматривать изображения, скопированные с другого веб-сайта в этот каталог.
Веб-сайт работал более года, но теперь изображения возвращают 404.
Изображения можно просматривать на компьютере разработчика с помощью IIS, но не после их публикации, а затем копирования веб-сайта на сервер.
Другой веб-сайт с практически тем же кодом с изображениями, уменьшенными таким же образом, нормально отображает изображения.
Я действительно озадачен и хотел бы услышать некоторые из ваших идей относительно того, в чем может быть моя проблема. Спасибо, что нашли время, чтобы прочитать это.
Комментарии:
1. вы пробовали нажимать ctrl-F5 в браузере во время просмотра страницы?
2. Какова структура каталогов проекта, развернутого в IIS? Вы используете http или https?
Ответ №1:
Первое, с чего я всегда начинаю с отсутствующих изображений, — это просмотреть исходный код и убедиться, что путь к изображению действительно соответствует тому, что я думаю.
Не могли бы вы что-нибудь сделать, чтобы путь теперь строился относительно файловой структуры компьютера, а не относительно сайта? Это может привести к тому, что изображение будет найдено локально, но не на вашем сервере.
Возможно, кому-то будет легче получить представление, если вы укажете URL-адрес, чтобы мы могли просмотреть отображаемую страницу.
Комментарии:
1. Если я попытаюсь перейти к файлу .jpg непосредственно из IIS (не используя код webcode) Я все еще получаю ошибку 404. Винтажные обучающие книжки. rohland.org
2. Я не получил письма, в котором был комментарий, иначе я бы вернулся к этому вопросу раньше. Я нажал на ссылку и вижу изображения повсюду, так что, я так понимаю, вы нашли проблему?
3. Да, ошибка драйвера с моей стороны. Я опубликовал решение — это была проблема с фильтрацией запросов, которую я вызвал.
Ответ №2:
Я почти уверен, что разобрался с проблемой, но это приводит к другим вопросам.
Я сократил имя файла, и теперь я могу перейти к нему через IIS.
Итак, вот мои текущие вопросы:
- Почему изображения были доступны для просмотра изначально, но не сейчас? Произошли ли какие-либо изменения в Интернете относительно допустимой длины файла? Или, возможно, какое-то обновление Server 2012R2, которое вызвало это изменение?
- Почему эти изображения доступны для просмотра на моем ПК с Windows 8.1 через IIS, но не на сервере 2012R2? Я также могу открыть веб-сайт и просмотреть все изображения в Windows 8.1.
Приятно решить одну проблему, но я все же хотел бы знать причину, если у кого-нибудь есть какие-либо предложения.
Ответ №3:
Я НАКОНЕЦ-то понял, почему исчезли мои фотографии. Да, переименование моих файлов .jpg устранило проблему, но это не было причиной. Проблема заключалась в том, что я добавил /2018, /2019 и / 2020 в свой отказ в фильтрации запросов IIS. На всех моих файлах с фотографиями стояли даты. Когда я переименовал / сократил имена файлов, я удалил /год. Фух! Какие глупости я делаю! Это также объясняло, почему я мог просматривать эти веб-страницы на своем компьютере для разработки, но не на сервере — без фильтрации запросов. Надеюсь, моя ошибка поможет кому-то в дальнейшем.