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

IIS 7.5 не загружает статические html-страницы

На выделенном сервере только что установлен IIS 7.5. Веб-приложение ASP.NET 4.0 скопировано в свою папку, новый веб-сайт создается на его собственном IP-адресе на посте 80, учетные записи IIS_IUSR и IUSR имеют права на чтение / выполнение в папке сайта, сайт назначен собственному интегрированному пулу приложений с 4.0 .NET. (Я пробовал классический пул с теми же результатами).

Проблема: когда я пытаюсь получить доступ к этому веб-сайту, браузер загружает только контент, сгенерированный ресурсами .NET, такими как страницы aspx, файлы .axd и т. Д. Статические изображения, статические файлы js, css и html находятся в источнике страницы, но IIS не не служу им. Инструменты разработки во всех браузерах жалуются, что все эти статические ресурсы были отправлены сервером с неправильным типом содержимого (простой текст вместо изображения, стилей и т. Д.). Что я делаю не так?

В IIS 7 / 7.5 появилась новая «функция» - службы ролей. Сообщение от rsbarro напомнило мне, что есть одна служба ролей, которая отвечает за статический контент. Это веб-сервер / общие функции HTTP / статический контент. Убедитесь, что значок типов MIME присутствует в диспетчере IIS, как предлагал rsbarro.

Если это не так, необходимо установить службу роли статического содержимого. Для этого выберите:

  • Диспетчер сервера
  • Роли
  • Узел веб-сервера (IIS) на левой панели
  • прокрутите до окна Role Services
  • проверьте, установлена ​​ли служба роли статического содержимого.

Судя по тому, что вы описываете, это ваша проблема.

В общем, если IIS7 не выполняет того, что сделал IIS6, первое, что нужно проверить, - это увидеть, установлена ​​ли соответствующая служба роли. Надеюсь это поможет.

В IIS перейдите на свой веб-сайт и проверьте раздел Типы MIME (см. Изображение ниже). Убедитесь, что вы видите в этом списке записи для .js, .css, .html и т. Д. И что для них указан правильный тип MIME. IIS 7.5 будет обслуживать страницы только в том случае, если указан тип MIME. По умолчанию типы MIME для этих расширений настраиваются в applicationHost.config файл, расположенный в C:\Windows\system32\inetsrv\config папку (вам может потребоваться запустить блокнот от имени администратора, чтобы просмотреть файл). Просто найдите .js, и вы должны найти запись в <mimeMap> в <staticContent> элемент.

Эти настройки можно изменить в вашем web.config файл. Если они есть, они появятся в следующем месте в web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Я бы определенно начал с проверки там. Если в разделе типов MIME все выглядит нормально, возможно, у вас есть модуль, который мешает запросам статических файлов (но, скорее всего, только если у вас есть <modules runAllManagedModulesForAllRequests="true" /> установить в вашем <system.webServer> раздел). Если это так, я бы удалил все настройки модулей в вашем web.config и посмотрите, сможете ли вы вызвать статические файлы, а затем прочитать их по одному, чтобы увидеть, какой модуль вызывает проблему. Если вы не можете понять это, я бы предложил опубликовать содержимое вашего web.config (или, по крайней мере, system.web и system.webServer разделы) в вопросе.

У меня была такая же проблема, но мой пул приложений работал под учетной записью домена, и этот пользователь имел права на папку веб-сайта. На моем веб-сайте отображается aspx, но нет статического содержимого. Моя проблема была решена путем добавления группы IIS_IUSRS в локальную политику безопасности, которая называется «олицетворять клиента после аутентификации». В группе IIS_IUSRS была моя учетная запись домена. Я запускаю сервер iis 7.5 Windows 2008.