动态URL路由不适用于ASP.NET Web窗体网站
我有asp.net web表单中的网站。它使用url友好的结构。假设我有urlwww.site.com/experience/experience category。这里有两个不同的页面“体验”和“体验”类别。现在,每当我尝试访问此urlwww.site.com/experience/experience category时,它都不会显示此页面。它向我展示了www.site.com/experience页面。如何解决这个问题 线路图动态URL路由不适用于ASP.NET Web窗体网站,asp.net,vb.net,url-routing,routeconfig,Asp.net,Vb.net,Url Routing,Routeconfig,我有asp.net web表单中的网站。它使用url友好的结构。假设我有urlwww.site.com/experience/experience category。这里有两个不同的页面“体验”和“体验”类别。现在,每当我尝试访问此urlwww.site.com/experience/experience category时,它都不会显示此页面。它向我展示了www.site.com/experience页面。如何解决这个问题 线路图 Public Module RouteConfig P
Public Module RouteConfig
Public Sub RegisterRoutes(routes As RouteCollection)
Dim settings = New FriendlyUrlSettings()
settings.AutoRedirectMode = RedirectMode.Permanent
routes.EnableFriendlyUrls(settings)
routes.MapPageRoute("experience-category", "experience/{name}", "~/experience-category.aspx") 'For Experience Category
End Sub
End Module
你可以做很多事情
routes.enableFriendlyURL(设置)
主要做的是向路由集合中添加两条路由
您的问题是,您的.aspx(experience.aspx)与您设置的路由url的一部分同名(experience/{name}
)。
路由将在路由集合中查找第一个匹配项(在本例中,它将是您的enableFriendlyURL
routes)
如果您想克服此问题,可以执行以下操作:
1.在routes.EnableFriendlyURL(设置)之前执行routes.MapPageRoute:
这将首先使用此规则,而不是FriendlyUrlSettings:
或
2.使用insert在routes集合的开头插入规则(而不是MapPageRoute):
3.避免与EnableFriendlyUrl路由规则匹配:
将您的控件(Experience.aspx)移动到一个文件夹中,这样在这种情况下它就不会干扰
Public Module RouteConfig
Public Sub RegisterRoutes(routes As RouteCollection)
routes.MapPageRoute("experience-category", "experience/{name}", "~/experience-category.aspx") 'For Experience Category
Dim settings = New FriendlyUrlSettings()
settings.AutoRedirectMode = RedirectMode.Permanent
routes.EnableFriendlyUrls(settings)
End Sub
End Module
Dim settings = New FriendlyUrlSettings()
settings.AutoRedirectMode = RedirectMode.Permanent
routes.EnableFriendlyUrls(settings)
Dim overwrExperienceUrl As String = "experience/{name}"
Dim overwrExperiencePRH As New PageRouteHandler("~/experience-category.aspx")
Dim overwrExperienceRoute As New Route(overwrExperienceUrl, overwrExperiencePRH)
routes.Insert(0, overwrExperienceRoute)