CSS, изображения, JS не загружаются в IIS


126

Все мои приложения работали нормально, но внезапно все сайты под IIS не загружают css, изображения, скрипты. Он перенаправляет на страницу входа.

Если я вхожу в систему, все работает нормально. например, mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

На моем локальном компьютере он отлично работает без входа в систему.


неправильная маркировка, не настоящий вопрос ...
Ренатас М.

3
Откат к версии с тегами, потому что я думаю, что знаю, что вызывает такое поведение, и теги актуальны. Если нет, я проголосую за закрытие.
Тим Медора,

Это не проблема с этой веб-конфигурацией, я перепробовал все ответы. Я думаю, что это проблема с IIS, потому что все сайты работали нормально, прежде чем я разверну одно приложение, оно повлияет на все на iis,
Имран Рашид,

@ImranRashid - наследует ли этот сайт настройки другого сайта в IIS?
Тим Медора

@ Тим Медора - Нет, сэр, это не наследуется от другого сайта.
Имран Рашид

Ответы:


185

Проблема может заключаться в том, что IIS не обслуживает статический контент, который вы можете настроить здесь: введите описание изображения здесь

Источник: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

Windows 10:

версия окна 10 вышеуказанного диалогового окна


2
У меня была аналогичная проблема, я понял, что это проблема с установкой, но включение статического содержимого, похоже, устранило ее!
ife labolz

5
Это спасло мой бекон, можно было подумать, что это было включено по умолчанию, но в Windows 10 это не так.
Джастин

3
Хромой по умолчанию этот флажок не установлен.
RayLoveless

3
@RayLoveless Я думаю, что хромает то, что MVC жестко зависит от этой функции IIS, которая позволяет статическому контенту работать в MVC. Думаю, их не стоит так сочетать. Возможно, .NET Core исправит это. : p
Мэтт Кодж

2
Ааи вот мы снова, спасаемся тем же ответом, спустя 2 года после последнего раза.
Эрик Ву

176

У меня была та же проблема: неаутентифицированная страница не загружала CSS, JS и изображения, когда я устанавливал свое веб-приложение в ASP.Net 4.5 в IIS 8.5 на Windows Server 2012 R2.

  1. У меня установлена ​​роль статического контента
  2. Мое веб-приложение находилось в папке wwwroot IIS, и все разрешения папки Windows остались нетронутыми (по умолчанию, включая IIS_IUSRS)
  3. Я добавил авторизацию для всех папок, содержащих CSS, JS и изображения.
  4. У меня была папка веб-приложения на общем ресурсе Windows, поэтому я удалил общий доступ, как это было предложено @ imran-rashid

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

Нажмите на функцию аутентификации Редактировать анонимную аутентификацию Изменить на удостоверение пула приложений

Я бился головой несколько часов и надеюсь, что этот ответ избавит моих товарищей-разработчиков от мучений.

Я действительно хотел бы знать, почему это работает. Есть предположения?


1
Это тоже сработало для меня. Я считаю, что это связано с тем, что у «конкретного пользователя» не было разрешений на расположение папки, в котором есть удостоверение пула приложений.
dcinadr

4
Несколько часов ? Мне требуется более 4. Слава богу, это помогло мне :)
Тито

3
У меня возникла эта проблема внезапно, после того, как я поделился папкой wwwroot. Ваше решение исправило это. Спасибо, что нашли время добавить его, и за детали.
Ресурс

1
LEG-END! Большое спасибо
Дэвид

1
Это второй раз, когда мне приходилось искать ваше сообщение, потому что это спасло меня дважды. Я бы проголосовал за вас в 100 раз, если бы мог. Использовал Umbraco - настроил мой локальный IIS с помощью Documents \ Visual Studio 2013 \ Projects - добавлен CPUName\IIS_IUSRSи все еще не загружается. Еще раз спасибо!
Роб Скотт,

18

У меня была аналогичная ошибка, моя консоль выглядела так:

ошибка

Моя проблема заключалась в том, что я запускал свой сайт в подпапке, поскольку компания использовала один верхний домен и ни одного поддомена. Как это:

host.com/app1

host.com/app2

Мой код выглядел следующим образом для включения скриптов, которые нормально работали на localhost, но не в app1 или app2:

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

Добавил знак тильды ~в src, и все заработало:

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

Объяснение ~vs /:

  • / - Корень сайта
  • ~/ - Корневой каталог приложения

/вернет корень сайта ( http://host.com/),

~/вернет корень приложения ( http://host.com/app1/).


1
голосование за. У меня была эта проблема, приложение не загружалось на сцене, а загружалось на производстве. Я тоже использую @ Url.Content () с ~ /. Не тестировался на производстве, но я думаю, что это
Kross

17

Попробуйте удалить раздел staticContent из вашего web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

Удаление staticContent работает, но теперь все мои шрифты 404?
Раджеш Сивасанкаран

Я не эксперт в этом, но, возможно, вам нужно добавить правильные объявления типа MIME для ваших шрифтов через диспетчер IIS на вкладке HTTP-заголовки свойств веб-сайта.
Intrepidis

1
Это решило проблему для меня, потому что у меня есть некоторые записи в файле .woff, которые находятся в разработке, но при производстве
такая

Спасибо, intrepidis, в моем случае ваше предложение сработало для меня. Ура!
user752746

15

Возможно, это не ответ на ваш вопрос, но у меня возникли те же симптомы, что и при новой установке IIS. CSS, JS и изображения не отображались. Произошло из-за того, что в IIS 7.5 не была установлена ​​роль «Статическое содержимое».


У вас может быть другая проблема, и моя проблема заключалась в том, что когда я перемещаю каталог из inetpub, он удаляет разрешения, когда я возвращаюсь, моя проблема была исправлена.
Имран Рашид

7

Вероятно, в вашем web.config включена проверка подлинности Windows. На локальном компьютере ваши учетные данные Windows передаются автоматически, и он работает. На действующем сайте вас рассматривают как анонимного пользователя (настройка IE может контролировать это, но не изменяйте это, если вы действительно не знаете, что делаете).

Это вызывает следующее:

  • Вы должны явно войти в систему.
  • Такие ресурсы, как скрипты и CSS, не обслуживаются на странице входа, потому что вы не прошли аутентификацию.

Это не сломано, просто работает, как задумано, но чтобы "исправить" это:

  • Измените тип аутентификации в web.config, если не хотите входить в систему.
  • И / или добавьте web.config в каталог (а), содержащий CSS, изображения, скрипты и т. Д., Который определяет правила авторизации.

режим аутентификации - это формы, а не окно? файл конфигурации веб-приложения переопределить конфигурацию машины? Есть ли какой-либо параметр в IIS, который вызывает это?
Имран Рашид

Аутентификация с помощью форм также вызовет запрос на вход в систему и предотвратит обслуживание таких ресурсов, как сценарии и изображения. См. Другие ответы о конкретных изменениях, которые вам нужно будет внести в web.config. Сохранение настроек в IIS изменит веб-конфигурацию.
Тим Медора

Сам решаю. Проблема возникает, когда я использую папку wwwroot в своей сети. Это меняет разрешение каталога. Когда я отменяю общий доступ и устанавливаю разрешение по умолчанию. Решено :) Спасибо Тим
Имран Рашид

6

Добавьте это в свой web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Путь является относительным, иногда добавление корня решает эту проблему. Попробуйте установить путь к"~/Images"
StuperUser

6

Используйте это в разделе конфигурации вашего файла web.config:

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>

6

Это была проблема с разрешениями Windows, я перемещаю папку, которая наследует неправильные разрешения. Когда я перехожу в папку wwwroot и добавляю разрешение пользователю iis, он начинает работать нормально.


1
У меня была такая же проблема, как раз перемещали файлы проекта из desktopв wwwroot папке, кроме того , я добавил полный контроль сетевой сервис, который связан с пула приложений.
mihkov 06

3

Для меня добавление этого в web.configрешенную проблему

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>

2

Мой час боли был связан с определением типов MIME в файле web.config. Мне это было нужно для сервера разработки, но локальный IIS ненавидел его, потому что он дублировал типы MIME ... как только я удалил их из web.config, проблема с js, css и изображениями, которые не загружаются, исчезла.


Трудно поверить, что это могут быть дубликаты MIME-типов! Я прочесывал не менее часа, пробуя разные разрешения пользователей и т.д., но в итоге в моем web.config дублировались MIME: - |
Аарон Худон

2

Это проблема аутентификации. В моем случае это решается следующими шагами: 1- Перейдите в диспетчер IIS, на левой панели разверните корень сервера и выберите свое веб-приложение в узле «Сайты». 2- На главном экране перейдите в раздел IIS и выберите Проверка подлинности. 3- Включить анонимную аутентификацию. 4- Затем выберите «Изменить» и установите для параметра «Изменить учетные данные анонимной аутентификации» значение «Удостоверение пула приложений».

Учетные данные для анонимной аутентификации


Я выполнил те же шаги, и проблема была решена. Спасибо Алиреза.
Арвинд Гаутам,

1

В моем случае,

IIS может загружать все localhost, но не может загрузить файлы моих шаблонов app.tagиз192.168.0.123

потому что .tagрасширения не было в списке.

Типы IIS MIME


1

Чтобы исправить это:

Перейти в информационную службу Интернета (IIS)

Нажмите на свой веб-сайт, на котором вы пытаетесь загрузить изображение

В разделе IIS откройте меню «Проверка подлинности» и также включите проверку подлинности Windows.


1

Одно предложение, которое я счел полезным в прошлом, при разработке сайтов в тестовой среде localhost при работе с копией рабочего сайта. Убедитесь, что вы закомментировали канонические теги:

  <!--<base href="http://www.example.com/">//-->

1

Если вы попробовали все вышеперечисленные решения, но по-прежнему возникают проблемы, рассмотрите возможность использования метода ResolveClientUrl () в ASP.NET.

Скрипт для примера:

Вместо того, чтобы использовать

<script src="~/dist/js/app.min.js" ></script>

Используйте метод

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

Это было мое решение, которое сработало для друга, которому я помогал!


1

У меня была такая же проблема. Для меня это произошло из-за того, что заголовок Cache-Control был установлен на уровне сервера в IIS как no-cache, no-store. Поэтому для моего приложения мне пришлось добавить в свой web.config следующее:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>

0

Одна из возможных причин этого заключается в том, что ваше приложение ожидает запуска на порту 443 (стандартный порт SSL), а порт 443 уже используется. Я несколько раз сталкивался с этим, когда разработчики пытались запустить наше приложение, когда на их компьютерах работает Skype.

Невероятно, но Skype работает на порту 443. На мой взгляд, это ужасный недостаток дизайна. Если вы видите, что ваше приложение пытается работать на 444 вместо 443, выключите Skype, и проблема исчезнет.


0

Я добавил app.UseStaticFiles();этот код в starup.cs метода Configure, чем он исправлен.

И проверьте свое разрешение на эту папку.



0

В моем случае, когда ни один из моих файлов javascript, png или css не загружался, я попробовал большинство ответов выше, и ни один из них, похоже, не помог.

Я наконец нашел « Фильтры запросов », и мне пришлось добавить .js, .png, .css в качестве разрешенного / принятого типа файла.

Как только я внес это изменение, все файлы обслуживались правильно.


0

Если вы видите ошибку 403 в консоли браузера, проверьте конфигурацию пакета MVC. Имена пакетов не должны совпадать с именами существующих папок в вашем проекте.

например.

bundles.Add(new StyleBundle("~/Content/css")...

... вызовет проблемы для IIS, если в вашем проекте существует структура папок $ (ProjectDir) \ Content \ css , поскольку он пытается найти в существующей папке содержимое пакета, которого нет.

Вместо этого просто используйте что-то вроде:

bundles.Add(new StyleBundle("~/Content/cssbundle")...

0

Эта проблема возникает, когда IIS не отображает статическое содержимое, такое как файлы JS, CSS и изображений.

Чтобы решить эту проблему, вам необходимо выполнить следующие шаги:

ПЕРЕЙДИТЕ в Панель управления> Включение или отключение компонентов Windows> Информационные службы Интернета> Службы всемирной паутины> Общие функции HTTP> Статическое содержимое.

Убедитесь, что статический контент включен.

Бинго. И все готово. Выполните жесткую перезагрузку страницы, и вы сможете увидеть все статическое содержимое.


0

У меня была такая же проблема, я попробовал все предложения, но ничего не получил. Скучали меня часами. Оказалось, что мой интернет-провайдер заблокировал порт 80 по некоторым причинам.

Совет: проверяйте свой трафик. Убедитесь, что порт 80 работает как локально (например, брандмауэр), так и извне.

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