2012-03-05 3 views
4

Я развернул небольшое веб-приложение, написанное в ASP.Net MVC 4. У нас есть правильные настройки пакетов JS/CSS, и они работают нормально локально. Проблема в том, что когда я развертываю сервер IIS 6, пакеты не работают. Js/css не загружается, и когда я пытаюсь перейти к js-ссылке в скрипте, я получаю код 404.ASP.Net MVC JS/CSS не работает при развертывании

Кто-нибудь разместил MVC 4 для IIS 6 и работал ли он?

+0

Я бы предположил, что это будет проблема маршрутизации, я считаю, что вам нужно внести изменения в настройку маршрутизации для запуска MVC на IIS6, я боюсь, что у меня нет данных to hand yet :( – dougajmcdonald

ответ

3

Проблема была в том, что мы работали как виртуальный каталог, настроенный для ASP.Net 4.0 на веб-сайте по умолчанию, который был настроен для ASP.Net 2.0.

Мы создали новый веб-сайт и установили его в asp.net 4.0, и все сработало отлично. Согласно этому сообщению на Haacked URL-адреса без расширения должны работать только в большинстве случаев IIS 6.

2

пучки подаются через extensionless URLs как:

IIS 6 не поддерживает extensionless URLs вне коробки. Когда он сталкивается с URL-адресом, заканчивающимся /js или /css, у него нет никакого понятия, что он должен связать этот URL с обработчиком aspnet_isapi.dll (ASP.NET).

Вы можете прочитать blog post от Phil Haack, в котором он объясняет, как вы можете настроить IIS 6 для ASP.NET MVC, чтобы активировать URL-адреса без расширения. Речь идет о ASP.NET MVC 3, но точно так же стоит для ASP.NET MVC 4.

О, и вы можете рассмотреть возможность обновления до IIS 7.0+, которая имеет эту функцию по умолчанию при работе в интегрированном режиме конвейера.

+1

Эта ссылка предполагает, что у вас есть расширение, например .axd, которое является частью URL-адреса. Связки поистине безграничны, хотя так, что он говорит, не работает. У нас уже есть настройка отображения подстановочных знаков, и это тоже не помогает. –

+0

@ShaneCourtrille, к сожалению, в настоящее время у меня нет доступа к ящику IIS 6, чтобы проверить это, но я думал, что, правильно настроив URL-адреса без расширения, вы сможете это достичь. Возможно, вы можете попробовать задать свой вопрос на http://serverfault.com, так как ваш вопрос больше связан с конфигурацией сервера, чем с программированием. –

+0

Нет, просто без расширения для меня тоже не работает, к сожалению. Я тоже не нашел решения для этого. –

0

Проблема с мином была в файле BundleConfig.cs в App_Start. Мой BindleConfig.cs файл смотрел ранее как следующий

bundles.Add(new ScriptBundle("~/Scripts/ui-js").Include(
            "~/Scripts/ui-js/jquery.min.1.11.1.js" 
            , "~/Scripts/ui-js/bootstrap.min.js" 
            , "~/Scripts/ui-js/bootstrap-slider.js" 
            , "~/Scripts/ui-js/bootstrap-lightbox.js" 
            , "~/Scripts/ui-js/common-script.js" 
            , "~/Scripts/ui-js/html5.js" 
            , "~/Scripts/ui-js/jquery.colorbox.js" 
            , "~/Scripts/ui-js/respond.src.js" 
            , "~/Scripts/ui-js/angular.min.js" 
            , "~/Scripts/ui-js/bootstrap.js" 
            ,"~/Scripts/ui-js/jRate.min.js" 
            , "~/Scripts/ui-js/jcrop.min.js" 
            )); 

И моя страница макета была

@Scripts.Render("~/Scripts/ui-js") 

После прибегая к помощи я нашел решение, как вы не можете использовать ту же структуру папок для нового ScriptBundle() виртуальной дорожка.

Так что я изменил выше этого

bundles.Add(new ScriptBundle("~/Scripts/ppScript").Include(
            "~/Scripts/ui-js/jquery.min.1.11.1.js" 
            , "~/Scripts/ui-js/bootstrap.min.js" 
            , "~/Scripts/ui-js/bootstrap-slider.js" 
            , "~/Scripts/ui-js/bootstrap-lightbox.js" 
            , "~/Scripts/ui-js/common-script.js" 
            , "~/Scripts/ui-js/html5.js" 
            , "~/Scripts/ui-js/jquery.colorbox.js" 
            , "~/Scripts/ui-js/respond.src.js" 
            , "~/Scripts/ui-js/angular.min.js" 
            , "~/Scripts/ui-js/bootstrap.js" 
            ,"~/Scripts/ui-js/jRate.min.js" 
            , "~/Scripts/ui-js/jcrop.min.js" 
            )); 

И в моей странице Layout я назвал ее

@Scripts.Render("~/Scripts/uiScript") 

ПРИМЕЧАНИЕ: Вы должны сделать это же с помощью CSS и Modernizr расслоение слишком :)