Сайт MVC3, развернутый на IIS6, перестает работать через 20 минут с ошибкой 404 Not Found

Я постараюсь сделать это кратко, не стесняйтесь спрашивать подробности.

Мобильная версия веб-сайта была создана с использованием бритвы MV3 и развернута на веб-сервере IIS6 с использованием не расширяемых URL-адресов. Поскольку .NET4 установлен на сервере, на сервере не выполняется никакой специальной настройки для работы с URL-адресами без расширений. Когда я пытаюсь получить доступ к сайту с URL: http://site/m/, я получаю 404 Not Found ошибку.

Что я делаю, чтобы вызвать эту проблему:

  1. Щелкните правой кнопкой мыши проект в VS2010 и опубликуйте его в локальной файловой системе.
  2. Заархивируйте все файлы и перенесите на рабочий сервер + распакуйте там
  3. Щелкните правой кнопкой мыши рабочий веб-сайт и добавьте виртуальный каталог для нового приложения.
  4. Создайте новый пул приложений со всеми настройками по умолчанию
  5. Поместите новый виртуальный каталог / приложение в этот пул приложений
  6. Попробуйте получить доступ к URL-адресу в браузере; получить 404 Not Found

Меня озадачивает то, что если я заменю шаг 1 на «Файл-> Создать новый проект MVC3», а затем опубликую в локальной файловой системе, все будет работать нормально:

  1. Тестовый проект отображается в браузере под тем именем, которое я использовал http://site/mvctest/
  2. Мне не нужны расширения
  3. Не перестает работать через 20 минут (см. Следующий абзац)

А теперь (даже) более странная часть:

Если я теперь перенесу приложение «m» в пул приложений, только что созданный для приложения «mvctest»; это тоже работает. Но только на 20 минут (или любое другое значение, которое я установил для «Завершение рабочего процесса после простоя для»).

Любые идеи?

РЕДАКТИРОВАТЬ: если я добавлю сопоставление с подстановочными знаками в виртуальный каталог /m/, он будет работать, но это также должно / может отрицательно повлиять на производительность?


person Espo    schedule 07.06.2011    source источник


Ответы (1)


похоже, что ваш первый сценарий не настроен для обработки запросов mvc. Необходимо интегрировать IIS 6 или сопоставить расширение для MVC. Настройте пул приложений для работы в режиме интегрированного конвейера. Что тогда происходит? Это должно сработать. Также проверьте журнал событий на предмет быстрого срабатывания защиты от сбоев из-за перезапуска рабочего процесса.

person Adam Tuliper - MSFT    schedule 07.06.2011
comment
Как перевести пул приложений IIS6 в режим интегрированного конвейера? Я думал, что это функция IIS7? В журнале событий ничего не найдено. - person Espo; 14.06.2011
comment
ах .. извините. да, iis 6 всегда является «классическим» (согласно определению iis 7), поэтому вы должны настроить обработчик подстановочных знаков, чтобы ваше приложение работало. - person Adam Tuliper - MSFT; 14.06.2011
comment
Что касается вашего вопроса о производительности - конечно, производительность может быть затронута, но вам нужно определить, является ли это проблемой или нет. Многие сайты работают таким образом без проблем с производительностью. Протестируйте свое приложение. Один из вариантов - удалить сопоставление для любых папок ресурсов (сценариев, изображений и т. Д.). - person Adam Tuliper - MSFT; 14.06.2011
comment
Вы уверены, что мне нужен обработчик? От Фила Блог Haacks: Если у вас есть сервер под управлением IIS 6, ASP.NET 4 и ASP.NET MVC 3, ваш веб-сайт должен просто работать с URL-адресами без расширений по умолчанию, созданными приложениями ASP.NET MVC. Нет необходимости настраивать сопоставления с подстановочными знаками или сопоставления * .mvc Также обратите внимание, что со стандартным MVC-проектом /mvctest/ все работает без сопоставления с подстановочными знаками. - person Espo; 17.06.2011
comment
интересно - это изменилось с asp.net 4 из-за URL-адресов без расширений (наши машины iis6 не являются asp.net4). Кажется, теперь вам это не нужно - узнавайте что-то новое каждый день :) ОДНАКО - согласно посту вам действительно нужно другое сопоставление. Я бы проверил кое-что из этого сообщения: Вот как функции URL-адресов ASP.NET версии 4.0 без расширений работают в IIS 6. У нас есть фильтр ISAPI с именем aspnet_filter.dll, который добавляет «/eurl.axd/GUID» к URL-адресам без расширений. . и убедитесь, что aspnet_filter.dll настроен правильно. - person Adam Tuliper - MSFT; 17.06.2011
comment
URL-адрес указанного выше элемента (а также содержит некоторые условия, которые должны быть выполнены для его использования, иначе вы вернетесь к старому пути): блоги. msdn.com/b/tmarq/archive/2010/06/18/ - person Adam Tuliper - MSFT; 17.06.2011