CSS, изображения, JS не загружается в IIS
все мои приложения работали нормально, но вдруг все сайты под IIS не загружают css, изображения, скрипты. Это перенаправление на страницу входа.
Если я войти он работает нормально. например: mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
на моей локальной машине он отлично работает без входа в систему.
16 ответов:
проблема может быть в том, что IIS не обслуживает статическое содержимое, которое вы можете настроить здесь:
Источник:http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
У меня была та же проблема, неавторизованная страница не загружала CSS, JS и изображения, когда я устанавливал свое веб-приложение в ASP.Net 4.5 в IIS 8.5 на Windows Server 2012 R2.
- у меня была установлена роль статического содержимого
- мое веб-приложение было в папке wwwroot IIS, и все разрешения папки Windows были неповрежденными (по умолчанию, включая IIS_IUSRS)
- я добавил авторизацию для всех папок, которые содержали CSS, JS и изображения.
- у меня была папка веб-приложения на общем ресурсе windows, поэтому я удалил общий доступ, как предложил @imran-rashid
тем не менее, ничто, казалось, не решило проблему. Затем, наконец, я попытался установить идентификатор анонимного пользователя в идентификатор пула приложений, и он начал работать.
Я ударился головой в течение нескольких часов и надеюсь, что этот ответ спасет агонию для моего товарища разработчики.
Я действительно хотел бы знать, почему это работает. Есть мысли?
Это может не ответить на ваш вопрос, но я стучал головой с теми же симптомами с новой установкой IIS. CSS, JS и изображения не появлялись. Было связано с тем, что роль "статическое содержимое" не установлена в IIS 7.5.
Попробуйте удалить staticContent из своего web.конфигурации.
<system.webServer> <staticContent> ... </staticContent> </system.webServer>
у меня была похожая ошибка, моя консоль выглядела так:
моя проблема заключалась в том, что я запускал свой сайт в подпапке, так как компания использовала один верхний домен и никаких поддоменов. Вот так:
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/
).
добавьте это в свой веб.конфигурации
<location path="Images"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Это была проблема с разрешениями windows, я перемещаю папку, которая наследует неправильные разрешения. Когда я перехожу в папку wwwroot и добавляю разрешение пользователю iis, он начинает работать нормально.
У вас, вероятно, включена проверка подлинности Windows в вашем интернете.конфиг. На локальном компьютере учетные данные Windows передаются автоматически, и это работает. На живом сайте вы рассматриваетесь как анонимный пользователь (т. е. настройка может управлять этим, но не изменяйте это, если вы действительно не знаете, что делаете).
Это приводит к следующему:
- вы должны явным образом войти в систему.
- ресурсы, такие как скрипты и CSS, не обслуживаются при входе в систему страница, потому что вы не прошли проверку подлинности.
Это не сломано, просто работает по назначению, но чтобы "исправить" это:
- измените тип аутентификации в интернете.config, если вы не хотите войти.
- и/или добавить веб -.config в каталоге(ы), содержащий CSS, изображения, скрипты и т. д. который определяет правила авторизации.
используйте это в разделе конфигурации вашего интернета.конфигурационный файл:
<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>
для меня добавление этого в
web.config
проблема<system.webServer> <modules runAllManagedModulesForAllRequests="true" > <remove name="UrlRoutingModule"/> </modules> </system.webServer>
в моем случае,
IIS может загрузить все, что с
localhost
, но не удалось загрузить мои файлы шаблоновapp.tag
С192.168.0.123
потому что
исправить это:
перейдите в Internet Information Service (IIS)
нажмите на свой сайт вы пытаетесь загрузить изображение на
В разделе IIS Откройте меню Проверка подлинности и включите проверку подлинности Windows.
одно предложение, которое я нашел полезным в прошлом при разработке сайтов в тестовой среде localhost при работе с копией производственного сайта. Убедитесь, что вы комментируете канонические теги:
<!--<base href="http://www.example.com/">//-->
мой час боли был связан с определением типов MIME в интернете.конфиг. Мне это было нужно для сервера разработки, но локальные IIS ненавидели его, потому что он дублировал типы MIME... как только я удалил их из интернета.конфигурации проблема с JS, CSS и картинки не загружается ушел.
одной из возможных причин этого является то, что ваше приложение ожидает запуска на порту 443 (стандартный порт SSL) и порт 443 уже используется. Я столкнулся с этим несколько раз с разработчиками, пытающимися запустить наше приложение, пока Skype работает на их компьютерах.
невероятно, Skype работает на порту 443. Это ужасный недостаток дизайна, на мой взгляд. Если вы видите, что ваше приложение пытается работать на 444 вместо 443, закройте Skype, и проблема исчезнет.
Если вы пробовали все вышеперечисленные решения и все еще имеете проблемы, рассмотрите возможность использования метода ResolveClientUrl() ASP.NET .
скрипт например:
вместо
<script src="~/dist/js/app.min.js" ></script>
используйте метод
<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>
Это было мое решение, которое работало для друга, которому я помогал!