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

10

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

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

Kizz
источник
Что вы видите в Fiddler (или Firebug)?
SLaks
Если это возможно, запустите страницу на сервере, особенно запустите статический контент на сервере, и вы получите подробный отчет об ошибке.
Аристос
Я не использую Firebug. Но Chrome, например, жалуется на «Ресурс, интерпретируемый как Image, но перенесенный с MIME-типом text / plain» на файл jpg на странице. То же самое для всех стилей, JS и статических HTML-страниц. Кроме того, динамическая загрузка сценариев и HTML не работает.
@ Аристос: я сделал это. Браузер сервера отображает страницу так же, как и внешние браузеры. Нет ошибок, просто неполная страница.
Имеет ли пользователь, работающий с веб-сервером, право на чтение этих файлов?
Люк М

Ответы:

12

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

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

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

Из того, что вы описываете, это, кажется, ваша проблема.

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

Влад
источник
Роль статического контента, как я пропустил это? Спасибо, исправили проблему отлично.
Дэвид Томас Гарсия
6

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

IIM MIME типы

Эти настройки могут быть переопределены в вашем 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секции) в этом вопросе.

rsbarro
источник
2

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

parttimeadjunct
источник
Хотелось бы, чтобы я проголосовал не раз. Я пришел к этому вопросу, когда искал, почему мои файлы .css не обслуживались IIS. Это было связано с разрешениями Windows для папок, в которых они хранились.
2b77bee6-5445-4c77-b1eb-4df3e5