Внедрение MVC 3 в IIS6
Изначально я развернул сайт с некоторыми из набора DLL, чтобы скопировать локальный (как показано на другой должности SO). После этого я установил пакет MVC 3 на сервер.
Когда я попал на свой сайт, я получаю:
Список каталогов Отказано в этом виртуальном Директория не допускает в списке.
Я увидел взломанный блог, но его почти 3 года сейчас и некоторые из них просто не работают. Кто-нибудь знает, что нам нужно сделать, чтобы заставить это работать после того, как мы установили MVC 3 на сервер?
ОБНОВЛЕНИЕ
Я обнаружил еще одну ссылку в разбитом блоге. По-видимому, это должно просто работать (нет необходимости делать подстановочные сопоставления). Мой виртуальный каталог веб-сайта настроен на запуск ASP.NET 4.0.30319, я установил ASP.NET MVC 3, и я запускаю IIS6 (Windows Server 2003 R2, вполне уверен, что это IIS6).
Ответы
Ответ 1
Виртуальный каталог был настроен на ASP.NET 4.0. В то время как "Веб-сайт по умолчанию" был настроен на запуск ASP.NET 2.0. Я изменил "Веб-сайт по умолчанию", чтобы запустить 4.0 в дополнение к virt. и он начал работать. Причина для меня загадка, но она сработала.
Ответ 2
Похоже, вы не настроили сопоставление подстановочных знаков. Вам необходимо настроить сопоставление в IIS, который отправляет все запросы в конвейер ASP.NET для обработки. Поскольку у вас нет настроенного сопоставления, он интерпретирует запрос как просмотр каталога (который, вероятно, не разрешен в вашей конфигурации).
От Haacked:
- В свойствах IIS для веб-сайта перейдите на вкладку "Домашний каталог".
- Нажмите кнопку "Конфигурация...". На вкладке "Сопоставления" нажмите "Вставить..."
- Рядом с меткой "Прикладные карты приложений" В текстовом поле введите "c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll"
- Снимите флажок "Проверить, существует ли файл". Нажмите "ОК"
Ответ 3
Я считаю, что ASP.NET 4 Extensionless URL-функция не работает для виртуального каталога на iis v6, если веб-сайт по умолчанию не настроен на запуск ASP.NET версии 4.0.
Для меня установка ASP.NET v4.0 на веб-сайт по умолчанию не является вариантом, так как он нарушает существующий виртуальный каталог vapp 2.0 vapp.
Добавление карт подстановочных приложений в виртуальный каталог mvc3 webapp работал у меня.
Вот список шагов, которые я сделал для развертывания mvc на iis6.
- ASP.NET v4 уже установлен на сервере Windows 2003
- Установить AspNetMVC3Setup.exe
- Скопируйте файлы webapp mvc3 на сервер без библиотек mvc3 в папке bin
- Создать виртуальный каталог, указывающий на папку приложения
- Установите версию ASP.NET 4.0.30319
- Добавьте карту приложения подстановочного знака в c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll и снимите флажок Проверить, существует ли файл
Ответ 4
О МАСШТАБЕ WILCARD APPLICATION MAP. Имейте в виду, что этот параметр заставляет IIS перехватывать каждый запрос, сделанный против веб-сервера. Сюда входят запросы на изображения, классические страницы ASP и HTML-страницы. Поэтому включение шаблона script для ASP.NET имеет последствия для производительности.
ДРУГОЕ РЕШЕНИЕ: В W2K3 SP2 с IIS6,.NET Framework (2, 3.5, 4).
Перейти к реестру:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0
Если необходимо создать DWORD EnableExtensionlessUrls со значением 0.
Затем из окна команды выполните: resetiis
Создайте приложение ASP.NET из шаблона MVC3.
Теперь в настройке global.asax маршруты, подобные тезисам:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.MapRoute(
// "Default", // Route name
// "{controller}.mvc/{action}/{id}", // URL with parameters
// new { controller = "Home", action = "Index", id = "" } // Parameter defaults
//);
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "About", id = "" }
);
}
Создайте AppPool для .NET Framework 4 и настройте веб-приложение для использования этого приложения. Вы можете использовать Denis Bauer ASP.NET Version Switcher или использовать Aspnet_regiis.exe.
РЕЗУЛЬТАТ: браузер показывает страницу "О странице" как страницу по умолчанию.