#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. Правило существует, но проблема все еще существует. Тем не менее, спасибо за ответ.