C# URL路由不适用于ASP.NET web表单?

C# URL路由不适用于ASP.NET web表单?,c#,asp.net,visual-studio-2010,url-routing,iis-express,C#,Asp.net,Visual Studio 2010,Url Routing,Iis Express,我最近启动了一个web应用程序,并决定在其中使用url路由(基本上只是为了练习一下) 应用程序是.NET4,我使用的是VS2010 SP1和IIS Express(集成管道) 问题是,当我运行应用程序时,只要路由URL中没有参数,路由就可以正常工作。如果有一个参数,那么我得到一个404 以下是global.asax.cs中的相关代码: void RegisterRoutes(RouteCollection routes) { routes.Clear(); routes.MapP

我最近启动了一个web应用程序,并决定在其中使用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

知道我做错了什么吗

干杯


Matt

在非工作路径中,实际页面名称似乎有输入错误。您在此路由中使用了
page\u detail.aspx
,而在工作路由中,您使用了
page detail.aspx
——请注意下划线与连字符。因此,我相信解决这个问题应该会奏效

routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user-detail.aspx", false);
天哪(拍额头)。昨天我花了一个下午的时间把我的头发都扯下来了,这只是一个打字错误!我需要一个假期!非常感谢你!