我通过NuGet将Microsoft.Asp.Net.FriendlyUrls.Core.dll安装到现有的asp.net 4.5 Webforms网站上。

我在RouteConfig文件中有以下内容

 public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Permanent;
            routes.EnableFriendlyUrls(settings);

            routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");
        }
**Global.asax**
void Application_Start(object sender, EventArgs e)
{

        RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}


在frurltest.aspx中,我尝试从RouteData中获取“ id”,如下所示:

string id = String.Empty;
if (RouteData.Values["id"] != null)
{
   id = RouteData.Values["id"].ToString();
}

Response.Write("id= " + id);


使用以下网址:http://localhost:48484/frurltest/2

我没有得到“ id”的值。 RouteData.Values.Count = 0。

知道我在这里想念什么吗?

注意:除了获取routedata之外,友好的url功能还起作用,即说我导航到/frutltest.aspx,将其更改为/ frutlest,然后可以使用$ RouteUrl生成链接。

更新:
经过尝试和错误后,我注意到如果在MapPageRoute之后移动EnableFriendlyUrls,则可以正常工作。即

public static void RegisterRoutes(RouteCollection routes)
{
      routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");

      var settings = new FriendlyUrlSettings();
      settings.AutoRedirectMode = RedirectMode.Permanent;
      routes.EnableFriendlyUrls(settings);
}


我所看到的所有示例都用作我最初的无效代码。不知道为什么它对他们有用而不对我有用。这是一个类似的问题:RouteData.Values stays Empty

最佳答案

我知道现在回答还为时已晚,但是对我来说,当我将URL的第一子句更改为与aspx页面不同的内容时,它就起作用了。
仅在"frurltest/{id}""~/frurltest.aspx"中,frurltest应该不同,例如:routes.MapPageRoute("frUrl", "frurltestNEW/{id}", "~/frurltest.aspx");

07-28 10:47