URL-маршрутизация не работает с веб-формами ASP.NET? - PullRequest
0 голосов
/ 28 сентября 2011

Я недавно запустил веб-приложение и решил использовать в нем URL-маршрутизацию (в основном просто для того, чтобы немного поработать с ним).

Приложение - .NET4, и я использую VS2010 SP1 иIIS Express (интегрированный конвейер).

Дело в том, что когда я запускаю приложение, маршрутизация работает нормально, пока в URL-адресе маршрута нет параметров.Если есть параметр, то я получаю 404.

Вот соответствующий код из global.asax.cs:

void RegisterRoutes(RouteCollection routes)
{
    routes.Clear();
    routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user_detail.aspx", false);
    routes.MapPageRoute("Users_Create", "users/create", "~/users/user-detail.aspx", false);    
}

void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

Приложение работает на IIS Express от VS.Виртуальная папка - /cms.

Если я перехожу на http://localhost:8888/cms/users/create, я вижу свою страницу как положено.

Если я перехожу на http://localhost:8888/cms/users/view/Matt, я получаю ошибку 404 (из ASP.NETне из IIS, поэтому запрос поступает в конвейер ASP.NET).

Я попытался добавить следующее в web.config, но это не имело никакого значения:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

Я пытался перейти в классический режим в IIS Express, но это не имело значения.Ни один не использовал старый добрый Кассини, а не IIS Express.

Есть идеи, что я делаю не так?

Ура,

Мэтт

1 Ответ

0 голосов
/ 28 сентября 2011

Кажется, есть опечатка фактического имени страницы в нерабочем маршруте.Вы использовали page_detail.aspx в этом маршруте, когда работали, вы использовали page-detail.aspx - обратите внимание на подчеркивание и дефис.Так что я считаю, что исправление должно помочь, то есть

routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user-detail.aspx", false);
...