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


126

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

Якщо я ввійду, він працює чудово. наприклад, mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

На моїй локальній машині він працює чудово без входу.


неправильне тегування, не справжнє запитання ...
Ренатас М.

3
Відкат до версії з тегом, тому що я думаю, що я знаю, що викликає таку поведінку, і теги є актуальними. Якщо ні, я проголосую за закриття.
Тім Медора

Це не проблема з цією веб-конфігурацією, я спробував усі відповіді. Я думаю, що це проблема з IIS, тому що всі сайти працювали нормально, перш ніж я розгортаю одну програму, це впливає на iis
Імран Рашид

@ImranRashid - цей сайт успадковує налаштування з іншого сайту в IIS?
Тім Медора

@Tim Medora - Ні сер не переймає його з інших сайтів.
Імран Рашид

Відповіді:


185

Проблема може полягати в тому, що IIS не розміщує статичний вміст, який ви можете налаштувати тут: введіть тут опис зображення

Джерело: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

Windows 10:

Версія Windows 10 цього діалогового вікна


2
У мене була подібна проблема, зрозумів, що це проблема встановлення, але включення статичного вмісту, здається, виправило це!
ife labolz

5
Це врятувало моє бекон, ви вважаєте, що це було включено за замовчуванням, але в Windows 10 це не так.
Джастін

3
Lame це не встановлено за замовчуванням.
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 -ashid

І все-таки ніщо не вирішило проблему. Потім нарешті я спробував встановити особу анонімного користувача на ідентифікацію пулу додатків, і воно почало працювати.

Натисніть на функцію аутентифікації Відредагуйте анонімну автентифікацію Перейдіть до ідентичності басейну додатків

Я стукав головою кілька годин і сподіваюся, що ця реакція врятує агонію для моїх колег-розробників.

Мені б дуже хотілося знати, чому це працює. Будь-які думки?


1
Це теж працювало для мене. Я вважаю, що це тому, що "конкретний користувач" не мав дозволу на розташування папок, де ідентифікація пулу програм.
dcinadr

4
Декілька годин ? Мені це більше, ніж 4. Слава богу, що він мені допоміг :)
Тито

3
Я отримав цю проблему раптово, після спільного використання папки wwwroot. Ваше рішення виправило це. Дякуємо, що знайшли час, щоб додати його, та за деталі.
Ресурс

1
LEG-END! Велике спасибі
Девід

1
Це вже другий раз, коли мені довелося шукати вашу посаду, але це мене врятувало вже двічі. Я б схвалив вас 100 разів, якби міг. Використовував Umbraco - налаштував мій локальний IIS за допомогою Документів \ Visual Studio 2013 \ Проекти - додав 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 Manager на вкладці заголовки HTTP властивостей веб-сайту.
intrepidis

1
Це вирішило проблему для мене, оскільки у мене є кілька записів .woff-файлів там у розробці, але при виробництві потрібна сама настройка
guideX

Спасибі intrepidis, у моєму випадку ваша пропозиція спрацювала на мене. Ура!
користувач752746

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

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! Я придивлявся щонайменше годину до спроб різних дозволів користувачів, і т. Д. І т. Д., Але це в кінцевому підсумку було скопійовано MIME в моїй web.config: - |
Аарон Гудон

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 методу Налаштування, ніж він виправлений.

І Перевірте свій дозвіл у цій папці.


0

Для зображень використовувати

@Url.Content("~/assets/bg4.jpg")

на Стилі використовують це

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))

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.