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

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

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

На моей локальной машине он отлично работает без входа.

Ответ 1

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

Ответ 3

У меня была та же проблема: страница без аутентификации не загружала 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

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

Click on the Authentication FeatureEdit the Anonymous AuthenticationChange to App Pool Identity

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

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

Ответ 4

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

error

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

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/).

Ответ 5

Это может не ответить на ваш вопрос, но я стукнулся головой с теми же симптомами с новой установкой IIS. CSS, JS и изображения не показывались. Это связано с тем, что роль "статического содержимого" не установлена ​​в IIS 7.5.

Ответ 6

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

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

Ответ 7

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

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

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

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

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

Ответ 8

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

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

Ответ 9

Используйте это в разделе конфигурации вашего файла 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>

Ответ 10

Чтобы добавить это в web.config, проблема

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

Ответ 11

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

Ответ 12

В моем случае

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

поскольку расширение .tag не было в списке.

типы IIS MIME

Ответ 13

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

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

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

В разделе IIS откройте меню "Аутентификация" и "Включить проверку подлинности Windows".

Ответ 14

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

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

Ответ 15

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

A script для примера:

Вместо использования

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

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

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

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

Ответ 16

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

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

Ответ 17

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

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

Ответ 18

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

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

Ответ 19

Для использования изображений

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

по стилю использовать это

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