Диагностика 404 ошибок в IIS 7 и ASP.NET MVC

У меня есть приложение MVC, разработанное и протестированное с Cassini. Развернуто на моем сайте на GoDaddy, и страница по умолчанию подходит нормально. Нажмите, чтобы войти, и я получу 404.

Я работаю под IIS 7 там, так что это неожиданно. Мои маршруты довольно просты:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Public", action = "Index", id = "" } 
        );
        routes.MapRoute(
            "Report1",
            "Report/{action}/{start}/{end}",
            new { controller = "Report", action = "Index" }
        );
        routes.MapRoute(
            "Report2",
            "Report/{action}/{start}/{end}/{idList}",
            new { controller = "Report", action = "Index" }
        );

Любая идея, что может происходить или как я могу устранить это?

4 ответа

Решение

Вы работаете в интегрированном режиме IIS7?

Классический режим IIS7 не позволяет автоматически сопоставлять URL-адреса без расширений с ASP.NET (так же, как IIS6).

Также убедитесь, что ваш Web.config<system.webServer> тег настроен правильно.

Не используйте runAllManagedModulesForAllRequests. Вы хотите, чтобы IIS обрабатывал такие ресурсы, как изображения.

<system.webServer> <!-- Rather do NOT use this -->
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Вместо этого добавьте модуль маршрутизации MVC

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

Все перепробовал, мне пришлось настроить свой веб-конфиг так, чтобы он работал.

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

У меня была такая же проблема, я загрузил контроллер, web.config и другие классы, но я забыл загрузить папку bin.

После того, как я загрузил папку bin, все заработало!

Другие вопросы по тегам