URL路由到默认页面

时间:2011-01-11 17:44:48

标签: asp.net url-routing

我有一个asp.net 4.0网络表单应用程序设置与网址重新发布。在开发中,我的应用程序的URL看起来很完美。我有一个名为enrollnow.aspx的页面响应路由,所以如果我输入localhost / enrollnow / abc,我的应用程序会按预期响应。

然而,一旦升级到我的登台环境,URL就会关闭。我有一个域,一个名为“enrollnow”的域名创建的虚拟目录。所以基本上,我在开发之外的URL是:mydomain.com/enrollnow/enrollnow/abc - 其中第一个enrollnow是目录,第二个enrollnow是页面名称,而abc是我的路线价值。

我有什么方法可以让“默认页面”响应,所以第二个enrollnow(这是enrollnow.asp)不是必需的吗?也许我可以将enrollnow.aspx页面重命名为default.aspx,或者我可以更改路由表中的映射?继承我的路线,这有帮助。谢谢!

Routetable:

RouteTable.Routes.Add("PURLRoute", New Route("EnrollNow/{PURL_ID}", New PageRouteHandler("~/EnrollNow.aspx")))

1 个答案:

答案 0 :(得分:1)

我会尝试在你的路线中省略“EnrollNow /”:

RouteTable.Routes.Add("PURLRoute", new Route("{PURL_ID}",
    new PageRouteHandler("~/EnrollNow.aspx")))

但是:问题在于路由表区分参数值和到另一个页面的路由。比如说,你有另一条路线:

RouteTable.Routes.Add("AnotherRoute", new Route("AnotherPage",
    new PageRouteHandler("~/AnotherPage.aspx")))

然后指定URL mydomain.com/enrollnow/AnotherPage时的行为将取决于您添加上述两条路线的顺序。如果在之前添加““AnotherRoute”,则URL将路由到“EnrollNow.aspx”,“AnotherPage”将被解释为{PURL_ID}的参数值(您可能不会想)。如果在之后添加““AnotherRoute”,您将被路由到“AnotherPage.aspx”(这很好,我认为)但是你永远不能将“AnotherPage”指定为{PURL_ID的值}。