CSS изображения не отображаются в ASP.NET MVC - PullRequest
2 голосов
/ 07 апреля 2011

В моем приложении ASP.NET MVC я ссылаюсь на фоновые изображения через CSS. Когда я запускаю его в среде разработчика, они появляются нормально. Но при развертывании (с использованием IIS 7.5) образы не загружаются вообще. Я пробовал каждую комбинацию относительных путей и background / background-image тэгов CSS, но ничего не работает. Вот моя файловая структура и CSS:

Структура файла:

Content  
    CSS file  
images  
    image.png  

CSS:

background-image: url(/images/bsb_header2.png);

Я также пытался ../images/bsb_header2.png и ../../images/bsb_header2.png безрезультатно.

Что действительно странно, так это то, что когда я пытаюсь перейти к изображению напрямую (т.е. www.website.com/images/image.png), меня перенаправляют на страницу входа. Возможно, мне не хватает настроек доступа или безопасности? Я еще ничего не сделал с элементами управления входом в систему (представление учетной записи по умолчанию и контроллер находятся в моем проекте, но я еще ничего не сделал с ними), и я могу нормально просматривать все остальные мои страницы.

Обновление: Я наконец понял это. Файл изображения, о котором идет речь, был зашифрован. Щелкните правой кнопкой мыши файл изображения и перейдите к свойствам, нажмите кнопку «Дополнительно» на вкладке «Общие», снимите флажок «Зашифровать содержимое для защиты данных», нажмите «ОК», «ОК».

Наконец-то пришла подсказка, когда я заметил, что имя файла в Проводнике Windows было зеленым. Я вижу зеленые имена файлов без проблем, поэтому я ничего не думал об этом. Затем я заметил, что это был единственный зеленый файл во всей папке веб-приложения. Положите два и два вместе, и это сработало мгновенно. Спасибо всем за помощь.

Ответы [ 7 ]

3 голосов
/ 15 марта 2012

Добавьте двух пользователей IUSR , IIS_IUSRS в папку публикации и назначьте им разрешение на чтение и выполнение

1 голос
/ 06 апреля 2012

в css set "display: block"

.searchbtn
{
    margin-top:-15px;
    background-image:url(../images/icons/search.png);
    background-repeat:no-repeat;
    width:18px;
    height:18px;
    display: block;
}
1 голос
/ 10 июля 2011

Я наконец понял это. Файл изображения, о котором идет речь, был зашифрован. Щелкните правой кнопкой мыши файл изображения -> свойства -> расширенную кнопку на вкладке "Общие" -> снимите флажок "Зашифровать содержимое для защиты данных" -> ОК -> ОК.

Наконец-то пришла подсказка, когда я заметил, что имя файла было зеленым в проводнике Windows. Я вижу зеленые имена файлов без проблем, поэтому я ничего не думал об этом. Затем я заметил, что это был единственный зеленый файл во всей папке веб-приложения. Положите 2 и 2 вместе, и это работает мгновенно Спасибо всем за помощь.

1 голос
/ 07 апреля 2011

Возможно ли, что IIS 7.5 был установлен неправильно?

Если вы включите или выключите функции Windows - под:

Информационные интернет-услуги / World Wide Web Services / Общие характеристики Http

есть флажок Статический контент

это проверено?

см. ссылку для скриншота.

0 голосов
/ 02 мая 2011

Имел ту же проблему и наконец нашел решение.

  • В IIS откройте «Правила авторизации».
  • Если там ничего нет, нажмите «Добавить разрешающее правило»
  • Выберите «Все пользователи» и нажмите OK
0 голосов
/ 07 апреля 2011

URL должен быть относительным!

background-image: url(images/bsb_header2.png)
0 голосов
/ 07 апреля 2011

Из вашего описания кажется, что Запрос на .png направляется в механизм ASP.NET/MVC вместо того, чтобы обслуживаться IIS.

Возможно ли, что правила маршрутизации вGlobal.asax выбирает файлы .png?(Я знаю, что это не объясняет, почему это работает в вашей среде разработки.)

Работает ли это, если вы добавляете ignoreRoute для файлов .png в начале списка маршрутов в Global.asax?Что-то вроде ниже ...

 routes.IgnoreRoute("{resource}.png");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...