ASP.NET MVC на IIS переходит к статическому обработчику файлов - PullRequest
18 голосов
/ 04 августа 2011

У меня проблема с сайтом ASP.NET MVC.

Вот подробности:

  1. ASP.NET MVC 2
  2. ASP.NET 4интегрированный конвейер
  3. IIS 7.5 в Windows Web Server 2008 R2

Каждый раз, когда я делаю запрос на приложение, я получаю ошибку «Ошибка HTTP 404.0 - Не найдено» и подробную ошибкуинформация показывает, что обработчик статических файлов сообщает об ошибке:

  • Модуль: IIS Web Core
  • Уведомление: MapRequestHandler
  • Обработчик: StaticFile
  • Код ошибки: 0x80070002

, означающий, что запрос никогда не поступал в стек MVC.

Следует отметить, что IIS уже обслуживает ASP.NET MVC 3 в том же пуле приложений и MVC 2 в пуле приложений ASP.ENT 2.Поэтому комбо ASP.NET 2 в пуле приложений ASP.NET 4 доставляет мне головную боль.

В основном я хочу обновить приложение с ASP.NET MVC 2 в пуле приложений ASP.NET 2.0 доASP.NET MVC 2 в пуле приложений ASP.NET 4.0.

Так есть идеи?

Ответы [ 4 ]

26 голосов
/ 14 октября 2011

Я вижу, вы исправили свою проблему, но для тех, кто гуглит:

У меня была эта проблема, и в моем случае мне просто нужно было зарегистрировать ASP.NET 4 в IIS. Я удалял и повторно добавлял сети, чтобы исправить другие проблемы, и просто забыл это сделать. Команда, которая работала для меня, была:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i

Ваша собственная версия .net может отличаться, особенно если вы находитесь в будущем, поэтому приведенный выше путь может быть не совсем правильным.

13 голосов
/ 30 октября 2012

У меня была такая же проблема при установке IIS после установки Visual Studio и т. Д.

Мне удалось исправить проблему, изменив файл Web.config, добавив runAllManagedModulesForAllRequests="true" к тегу <modules>:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        ...
    </modules>
</system.webServer> 

(Подробнее / скопировано здесь: http://www.west -wind.com / weblog / posts / 2011 / Mar / 27 / ASPNET-Маршрутизация не работает на IIS-70 )

0 голосов
/ 20 марта 2018

Ответ Криса заставил меня проверить, действительно ли пул приложений был настроен для .net 4. Конечно, этот сервер по умолчанию создает 32-битные пулы .net 2 в классическом режиме.

Убедитесь, что ваше приложение использует 4.0, и вам, вероятно, понадобится интегрированный конвейер для всех новых разработок. 32/64 в основном зависит от ваших зависимостей. По умолчанию для параметра «разрешить 32-разрядное выделение» установлено значение false.

0 голосов
/ 05 августа 2011

Итак, я нашел ошибку. В корне остался документ по умолчанию, который не нужен для приложений, использующих интегрированный конвейер. Также были необходимы некоторые изменения в Global.ascx и регистрации маршрутов, но после этого все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...