Изображения CSS, не отображаемые в ASP.NET MVC

#css #asp.net-mvc #image

#css #asp.net-mvc #изображение

Вопрос:

В моем 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 ), я перенаправляюсь на страницу входа в систему. Возможно, мне не хватает какого-либо параметра доступа или безопасности? Я еще ничего не сделал с элементами управления входом (представление учетной записи по умолчанию и контроллер есть в моем проекте, но я еще ничего с ними не делал), и я могу просматривать все остальные мои страницы просто отлично.

Обновление: я, НАКОНЕЦ, понял это. Файл изображения, о котором идет речь, был зашифрован. Щелкните правой кнопкой мыши файл изображения и перейдите в свойства, нажмите кнопку дополнительно на вкладке общие, снимите флажок «Шифровать содержимое для защиты данных», нажмите OK, OK.

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

Комментарии:

1. Можете ли вы предоставить прямую ссылку?

Ответ №1:

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

Ответ №2:

Я, НАКОНЕЦ, понял это. Файл изображения, о котором идет речь, был зашифрован. Щелкните правой кнопкой мыши файл изображения -> свойства -> кнопка дополнительно на вкладке общие -> снимите флажок «Шифровать содержимое для защиты данных» -> OK -> OK.

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

Ответ №3:

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

Если вы хотите включить или выключить функции Windows — в:

Информационные службы Интернета / Службы всемирной паутины / Общие функции Http

установлен флажок статического содержимого

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

смотрите снимок экрана по этой ссылке.

Комментарии:

1. Да, это проверено. IIS был предустановлен на моем компьютере с Win 7 Pro. Возможно ли переустановить?

2. @Ross — это кажется таким — kodyaz.com/articles/how-to-install-iis7-on-windows-7.aspx

Ответ №4:

в css установите «отображать: блокировать»

 .searchbtn
{
    margin-top:-15px;
    background-image:url(../images/icons/search.png);
    background-repeat:no-repeat;
    width:18px;
    height:18px;
    display: block;
}
  

Ответ №5:

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

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

Комментарии:

1. «Я также пробовал ../images/bsb_header2.png и ../../images/bsb_header2.png безрезультатно». — которые оба относительны.

2. Спасибо, но это не сработало. Я думаю, что проблема в чем-то более глубоком. Как я уже упоминал, я даже не могу перейти непосредственно к изображению. Мне предлагается войти в систему, когда я это делаю.

Ответ №6:

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

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

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

  routes.IgnoreRoute("{resource}.png");
  

Комментарии:

1. Спасибо, но, к сожалению, это не сработало. Я довольно новичок в IIS; есть ли в IIS параметр, который я должен настроить, чтобы он отображал изображения?

Ответ №7:

Возникла та же проблема, и, наконец, найдено решение.

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

Комментарии:

1. Правило существует, но проблема все еще существует. Тем не менее, спасибо за ответ.