Ответ 1
Это была проблема с разрешением Windows, я переместил папку, на которой он наследует неправильные разрешения. Когда я перехожу в папку wwwroot и добавляю разрешение пользователю iis, он начинает нормально работать.
Мои приложения работали нормально, но вдруг все сайты под IIS не загружают css, изображения, скрипты. Он перенаправляется на страницу входа.
Если я вхожу в систему, он отлично работает. например mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
На моей локальной машине он отлично работает без входа.
Это была проблема с разрешением Windows, я переместил папку, на которой он наследует неправильные разрешения. Когда я перехожу в папку wwwroot и добавляю разрешение пользователю iis, он начинает нормально работать.
Проблема может заключаться в том, что IIS не обслуживает статический контент, который вы можете настроить здесь:
Источник: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
Windows 10:
У меня была та же проблема: страница без аутентификации не загружала CSS, JS и изображения, когда я устанавливал свое веб-приложение в ASP.Net 4.5 в IIS 8.5 на Windows Server 2012 R2.
Тем не менее, казалось, ничего не решило проблему. Затем, наконец, я попытался установить для идентификатора анонимного пользователя идентификатор пула приложений, и он начал работать.
Я несколько часов ударился головой и надеюсь, что этот ответ спасет агонию моих коллег-разработчиков.
Я действительно хотел бы знать, почему это работает. Какие-нибудь мысли?
У меня была аналогичная ошибка, моя консоль выглядела так:
Моя проблема заключалась в том, что я запускал свой сайт в подпапке, так как компания использовала один верхний домен и никаких поддоменов. Вот так:
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/
).
Это может не ответить на ваш вопрос, но я стукнулся головой с теми же симптомами с новой установкой IIS. CSS, JS и изображения не показывались. Это связано с тем, что роль "статического содержимого" не установлена в IIS 7.5.
Попробуйте удалить раздел staticContent из web.config.
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
Вероятно, в вашем web.config включена проверка подлинности Windows. На локальном компьютере ваши учетные данные Windows автоматически передаются и работают. На реальном сайте вас рассматривают как анонимного пользователя (настройка IE может контролировать это, но не изменяйте это, если вы действительно не знаете, что делаете).
Это вызывает следующее:
Это не сломано, просто работает по назначению, но "исправить" это:
Добавьте это в свой web.config
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Используйте это в разделе конфигурации вашего файла 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>
Чтобы добавить это в web.config
, проблема
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
Мой час боли объяснялся определением типов MIME в web.config. Мне это было нужно для сервера разработки, но локальный IIS ненавидел его, потому что он дублировал типы MIME... как только я удалил их из web.config, проблема с js, css и изображениями не загружалась.
В моем случае
IIS может загружать все с помощью localhost
, но не смог загрузить файлы моего шаблона app.tag
из 192.168.0.123
поскольку расширение .tag
не было в списке.
Чтобы исправить это:
Перейдите в Информационную службу Интернета (IIS)
Нажмите на свой сайт, на котором вы пытаетесь загрузить изображение.
В разделе IIS откройте меню "Аутентификация" и "Включить проверку подлинности Windows".
Одно из предложений, которое я нашел полезным в прошлом при разработке сайтов в тестовой среде localhost при работе с копией производственного сайта. Убедитесь, что вы прокомментируете канонические теги:
<!--<base href="http://www.example.com/">//-->
Если вы пробовали все вышеупомянутые решения и все еще имеете проблемы, рассмотрите возможность использования метода ResolveClientUrl() ASP.NET.
A script для примера:
Вместо использования
<script src="~/dist/js/app.min.js" ></script>
Используйте метод
<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>
Это было мое решение, которое работало для друга, которого я помогал!
У меня была такая же проблема. Для меня это было связано с тем, что заголовок Cache-Control был установлен на уровне сервера в IIS как no-cache, no-store. Поэтому для моего приложения мне пришлось добавить ниже в мой web.config:
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
</customHeaders>
</httpProtocol>
Одной из возможных причин этого является то, что ваше приложение будет работать на порту 443 (стандартный порт SSL), а порт 443 уже используется. Я несколько раз сталкивался с разработчиками, пытающимися запустить наше приложение, когда Skype работает на своих компьютерах.
Невероятно, Skype работает на порту 443. Это, по моему мнению, ужасный недостаток дизайна. Если вы видите, что ваше приложение пытается работать на 444 вместо 443, выключите Skype, и проблема исчезнет.
Я добавил app.UseStaticFiles();
этот код в starup.cs метода Configure, чем он исправлен.
И проверьте свое разрешение на эту папку.
Для использования изображений
@Url.Content("~/assets/bg4.jpg")
по стилю использовать это
style="background-image:url(@Url.Content("~/assets/bg4.jpg"))