Диагностика 404 ошибок в IIS 7 и ASP.NET MVC - PullRequest
18 голосов
/ 01 апреля 2009

У меня есть приложение 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 ]

29 голосов
/ 01 апреля 2009

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

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

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

23 голосов
/ 10 мая 2013

Не использовать 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>
14 голосов
/ 15 февраля 2011

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

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
1 голос
/ 12 декабря 2013

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

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

...