C# 使用Web表单路由时查询字符串丢失

C# 使用Web表单路由时查询字符串丢失,c#,asp.net,webforms,url-routing,C#,Asp.net,Webforms,Url Routing,我正在尝试使用查询字符串路由到以下页面: http://sitename/Pages/Pages.aspx?id=1 - route to - http://sitename/testpage1 http://sitename/Pages/Pages.aspx?id=2 - route to - http://sitename/testpage2 我正在Web表单项目中使用Microsoft.AspNet.FriendlyURL: var settings = new FriendlyUr

我正在尝试使用查询字符串路由到以下页面:

http://sitename/Pages/Pages.aspx?id=1 - route to - http://sitename/testpage1  
http://sitename/Pages/Pages.aspx?id=2 - route to - http://sitename/testpage2
我正在Web表单项目中使用Microsoft.AspNet.FriendlyURL:

var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
routes.RouteExistingFiles = true;
routes.MapPageRoute("News Default", "News", "~/news/news.aspx");
routes.MapPageRoute("Contact Default", "Contacts", "~/contacts/contacts.aspx");

routes.MapPageRoute("Test1", "TestPage1", "~/Pages/Pages.aspx?id=1");
routes.MapPageRoute("Test2", "TestPage2", "~/Pages/Pages.aspx?id=2");

News Default和Contact Default可以正常工作,但testpages不能正常工作,因为它们会丢失查询字符串值。

我为路由使用了默认值。可能不是最优雅的解决方案,但它可以:

routes.MapPageRoute("Test2", "TestPage2/{id}", "~/Pages/Pages.aspx", true, 
new RouteValueDictionary {{"id","2"}}); 

当你说但不是测试页面时,你的确切意思是什么?如果我输入http://sitename/testpage1 它使用http://sitename/Pages/Pages.aspx 但是会丢失querystring值。