Диагностика 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, все заработало!