Назад | Перейти на главную страницу

IIS7 возвращает пустое значение при запросе статического содержимого

Я пытаюсь настроить демонстрационную машину, которая является EEEPC с версией Windows 7 Home Premium, все драйверы правильно загружены (не спрашивайте меня, почему это версия Home) с установленным IIS7.

Я развернул приложение для демонстрации на машине, которая является сайтом ASP.NET MVC, добавил веб-сайт через консоль, добавил пул приложений. Пул приложений работает как NetworkService, а гость проходит проверку подлинности как IUSR.

Я добавил права на изменение для NetworkService и права на чтение и выполнение для IUSR для папки веб-сайта и его содержимого.

Когда я попадаю в корень Интернета, скажем http://example.com/ Я получаю правильный HTML-код, отображаемый с веб-сайта (что означает, что приложение работает), но проблема в том, что все статическое содержимое возвращается пустым.

Я не уверен, почему это происходит. Нет страницы с ошибкой 404 или 500, просто пустой ответ при обращении к статическому контенту. Весь контент, созданный ASP.NET, работает нормально (хотя и немного странно, поскольку все CSS и изображения не загружаются)

Пожалуйста, помогите, консоль управления IIS7 меня очень сбивает с толку, и мне понадобится машина к завтрашнему дню.

В моем случае роль сервера была уже установлена, но статический обработчик обслуживал пустые страницы даже для тривиального тестового сайта с помощью всего лишь одного сопоставления обработчика.

Исправление заключалось в том, чтобы включить ограничение запроса «Вызывать обработчик, только если запрос сопоставлен с». Неважно, установил ли я его в «Файл» или «Файл или каталог»; пока флажок установлен, он работает:

                 

Если это все еще не помогает, еще одна вещь, которая приводит к пустым страницам, - это попытка указать путь в разделе «Путь запроса», например public или, может быть public/*. Последнее просто неверно, а первое следует принять, но вместо этого будут пустые страницы. Решение состоит в том, чтобы обернуть отображение обработчика в <location path='public'> раздел, указав * для параметра «Путь запроса». Или в диспетчере IIS разверните сайт и сначала выберите свою папку, затем отредактируйте сопоставления обработчиков.

Как предположил @MattB, у меня не была включена функция «Статическое содержимое», но это только часть проблемы.

Я добавил функцию «Статическое содержимое», но проблема все еще сохраняется, поэтому я собираюсь удалить MvcHttpHandler по умолчанию из списка сопоставлений обработчиков, и каким-то образом проблема решается сама собой ... поэтому проблема заключалась в том, что MvcHttpHandler перехватывал запросы до того, как StaticFileHandler,

К вашему сведению, после установки «Статического содержимого» также убедитесь, что ...

  1. В диспетчере служб IIS щелкните свой веб-сайт.
  2. Дважды щелкните функцию «Сопоставления обработчиков».
  3. С правой стороны (панель «Действие») вы увидите ссылку «Просмотреть упорядоченный список ...», щелкните по ней.
  4. Затем вы найдете порядок, в котором модуль соответствует каждому запросу, убедитесь, что порядок имеет смысл.

В моем случае MvcHttpHandler был выше всего остального, я решил проблему, переместив его в конец списка, что является наиболее разумным местом, где он должен находиться, потому что обработчики файлов AXD, обработчики TRACE, обработчики OPTIONS и статический контент получают шанс при обработке запроса в первую очередь.

Надеюсь, это поможет кому-то найти в Google ту же проблему :-)