маршрутизация asp-mvc при размещении в IIS в среде разработки - PullRequest
0 голосов
/ 30 января 2009

У меня есть приложение в среде IIS 5.1 в "localhost / mvcapplication1"

Конфигурация маршрутизации выглядит примерно так:

    routes.MapRoute("mvc-default", "{controller}.mvc/{action}/{id}"
        , new { controller = "Home", action = "Index", id = (string)null });


    routes.MapRoute("Root", ""
        , new { controller = "Home", action = "Index", id = (string)null });

Когда страница направляется через «Root», ссылки на представлениях будут указывать на

http://localhost/mvcapplication1/MvcApplication1/Product.mvc

, которого, очевидно, не существует. Однако, когда используется первый «mvc-default», он работает хорошо.

Если приложение размещено в , http: //......./ также будет работать хорошо.

есть какие-нибудь подсказки о том, как ее решить?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 01 февраля 2009

Вы столкнулись с ошибкой 404, потому что вы установили правило маршрутизации "{controller} .mvc / {action} / {id}", которое, очевидно, добавляет расширение .mvc после имени контроллера и "" правило маршрутизации не будет предшествовать, даже работать, потому что вы используете ненастроенный IIS.

Чтобы исправить это без настройки IIS, вы можете изменить .mvc на то, что в настоящее время обрабатывает ASP.Net, например .aspx, .asmx или что-то еще.
Если вы хотите исправить для IIS, перейдите по ссылкам ниже, следуйте инструкциям и удалите расширение .mvc.

ASP.Net
Блог Фила Хаака
Вы можете найти больше сообщений об этом, если вы просто Google об этом.

0 голосов
/ 30 августа 2010

с опозданием на год, но, возможно, это поможет кому-то еще. у меня была та же проблема, что и при использовании IIS6, и я заставил ее работать, добавив эти две записи в качестве последних двух, перечисленных в моей конфигурации маршрутизации:

            routes.MapRoute(null, "{controller}.aspx/{action}");
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.aspx/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

замените «.aspx» на «.mvc» или как вам нужно.

0 голосов
/ 04 февраля 2009

Может быть, это работает:
Изменить: </p> <pre><code>HttpContext.Current.RewritePath(Request.ApplicationPath);

в </p> <pre><code>HttpContext.Current.RewritePath(Request.ApplicationPath, false);

в default.aspx.cs (или default.aspx.vb)

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