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


14

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

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

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

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

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

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

Ответы:


25

Здесь можно найти параметр: Диспетчер серверов> Роли> Добавить службы ролей. Вам нужно поставить галочку рядом со Статическим контентом
John M

2

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

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

                  введите описание изображения здесь

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


1

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.