MVC + IIS7 = проблема с CSS

У меня есть веб-сайт, работающий через IIS7 в Vista. Сайт работает на порту 88, поэтому http://localhost:88 должен отображать представление по умолчанию / Home / Index.

Это работает правильно, как и все другие представления.

Однако есть одна проблема. Мои пути к скриптам указывают на / Scripts / [FILE], а мои пути CSS указывают на / Content / [FILE]. Я предполагал, что папка / Content или / Scripts всегда будет в корне сайта, поскольку я не собираюсь запускать этот сайт в настройках виртуального каталога. Всякий раз, когда страницы отображаются, на них НЕТ CSS или скриптов! Так что все выглядит шатким, и скрипты явно не работают, следовательно, многие представления тоже не работают.

Это очень странная проблема, я уверен, что она является результатом моего отсутствия знаний о размещении вещей под IIS7. Буду признателен за любую помощь, которую может предложить. Большое спасибо!


person brady gaster    schedule 09.12.2008    source источник
comment
Не могли бы вы опубликовать обработанный HTML-код, чтобы мы могли вам помочь?   -  person Brian Vallelunga    schedule 09.12.2008
comment
Когда я пытаюсь перейти к localhost: 88 / Content / Site.css, я получаю ASPX Сообщение об ошибке 404. Кажется, расширение CSS обрабатывается фильтром isapi ASPNET (как ни странно!).   -  person brady gaster    schedule 09.12.2008


Ответы (5)


Я надеюсь, что продолжение этой беседы выражает желание убедиться, что эта проблема никого не сбивает с пути. На различных форумах есть много документации по решению этой проблемы в Vista, но я не смог найти подобных статей для 2K8. Как указано в этом сообщении на форуме, мне удалось исправить проблему на машина Vista. Увы, подобная казнь не решила проблему на 2К8.

Я убедился, что StaticFileHandler был включен в web.config , как предлагается в этом сообщении блога на apijunkie.com . Тем не менее, не повезло.

Уточняю, здесь не повезло - моя серверная функциональность была идеальной. Все маршруты MVC работают как чемпион. Просто весь рендеринг CSS и JS не удался. Когда браузер указывал прямо на файлы CSS или JS, результатом была страница ASP.NET 404, а не традиционная страница с ошибкой 404.

Итак, я вошел в диспетчер IIS7 и в диалоговое окно «Сопоставления обработчиков». Я добавил новый обработчик, который указал тип System.Web.StaticFileHandler и дал ему расширение * .CSS. Затем я повторил это для файлов * .JS, * .PNG и * .GIF. Когда я обновил сайт в браузере, все отобразилось правильно. Снимки экрана ниже демонстрируют этот процесс.

Окно сопоставлений обработчиков:

сопоставления обработчиков
(источник: windows.net)

Добавление нового управляемого обработчика

alt text
(источник: windows.net)

Это устранило проблему, и теперь у меня есть отлично работающее приложение MVC, размещенное в W2K. Время для Гиннесса.

person brady gaster    schedule 10.12.2008
comment
Спасибо за это. Сработало для меня, когда я тоже столкнулся с проблемой. - person µBio; 08.02.2009
comment
Кто-нибудь может записать шаги, пожалуйста. Изображения не работают. - person Jaider; 05.10.2012
comment
Насколько его файлы CSS возвращали 404, его изображения здесь делают то же самое. :) Всегда любил битые ссылки на изображения. - person Robert Koritnik; 08.11.2012
comment
@bradygaster: не могли бы вы повторно загрузить свои изображения в imgurl и перенаправить свой ответ на эти изображения? Потому что, судя по содержанию, они важны. - person Robert Koritnik; 08.11.2012
comment
голосование против, пожалуйста, делайте то, что говорит Роберт Коритник, и я буду голосовать за - person knocte; 13.03.2014
comment
SINCERE приносит извинения за то, что изображения не работают. Я включил уведомления SO, так что больше никогда этого не повторится! - person brady gaster; 16.09.2014

На панели управления выберите «Включение или отключение компонентов Windows», затем установите флажок «Статическое содержимое» в подподподподузле IIS.

person xport    schedule 30.11.2010
comment
Это была моя проблема. Я бы порекомендовал сначала проверить это. - person Elan Hasson; 26.01.2014

Проблема заключалась в том, как я создал приложение. Согласно ветке форума, расположенной здесь, мне нужно было выбрать «Классический». NET AppPool ", чтобы исправить мою проблему. Должен любить прогресс!

person brady gaster    schedule 09.12.2008
comment
Когда я создал пул приложений, я оставил режим по умолчанию: _1 _... Я просто переключился на Classic и, похоже, работает. Спасибо - person Jaider; 05.10.2012

Оказывается, это не исправление в Windows 2008. Если у кого-то есть идеи, как решить эту проблему, мы будем признательны.

Подробная проблема:

Сервер Windows 2K8, IIS7. Включите конвейер и установите поддержку статических файлов. MVC работает, но CSS не отображает.

Какого черта?

person brady gaster    schedule 10.12.2008

Проблема заключается не в авторизации / аутентификации, а в модулях, которые теперь управляют IIS. Внутри system.webServer вы должны установить для runAllManagedModulesForAllRequests значение false, чтобы вы могли отображать все изображения / CSS без проблем с аутентификацией.

На веб-сайтах ASP.NET значение runAllManagedModulesForAllRequests ранее нужно было установить в значение true для поддержки маршрутизации. Однако после обновления IIS 7 пакетом обновления значение runAllManagedModulesForAllRequests может быть установлено на false или опущено при работе с ASP. NET-маршрутизация.

Ref. http://www.iis.net/configreference/system.webserver/modules

P.S. Не забудьте добавить следующие строки в раздел AppSettings моего файла web.config:

‹Добавить ключ =" autoFormsAuthentication "value =" false "/>

‹Добавить ключ =" enableSimpleMembership "value =" false "/>

person Ivan Paniagua    schedule 23.12.2014
comment
Пожалуйста, прекратите публиковать копии этого же ответа. Это не относится к вопросам, на которые вы его публикуете. - person Andrew Barber; 24.12.2014