【发布时间】:2018-01-15 23:43:23
【问题描述】:
前言:
这个问题对于 Stack Overflow 来说可能过于具体。 我还在 Kentico 论坛上发布了它:https://devnet.kentico.com/questions/problems-with-kentico-and-wildcard-urls-after-upgrade-to-11
简介:
升级到 Kentico 11 后,我使用的通配符设置似乎不再正常工作。经过大量挖掘和研究,我认为问题出在 Kentico 用于将通配符值映射到 URL 参数的机制中……但我不知道如何研究该过程以尝试找出它在哪里出错和/或如何解决。
详情:
我有一个设置了以下“标准 URL 或通配符”值的页面:
/Invest/Communities/{ProvinceName}/{EconomicRegionName}/{RegionalDistrictName}/{CommunityName} 这个页面也有一个别名/Invest/Communities/Province,但我不确定这对我有什么帮助。
页面本身包含一个自定义控件,其用户控件虚拟路径为~/<project>/WebControls/Communities/Community.ascx
在升级之前,此 URL:/Invest/communities/myProvince/myEconomic/myRegional/myCommunity/ 工作正常 - 如果我在 Community.ascx.cs Page_Load {} 方法的开头设置断点,断点会被命中,我可以将这四个值拉出查询字符串(通过例如HttpContext.Current.Request["ProvinceName"])。
升级后,相同的 URL 没有遇到断点,而是将我引导至 404 错误。但是,如果我手动将 URL 重写为/invest/communities/profile/?ProvinceName=myProvince&EconomicRegionName=myEconomic&RegionalDistrictName=myRegional&CommunityName=myCommunity,则页面按预期工作。断点命中,可以从Request对象中拉取值。
似乎值映射的任何机制都出现了问题......但由于这是 Kentico 内置的东西,我不清楚如何深入研究它以了解它的失败之处。
我尝试过的其他事情:
- 重新签名所有宏。这解决了我在升级后遇到的另一个问题,但对这个问题没有帮助。
- 在页面 > URL 选项卡上:从
Standard URL or wildcard更改为Route在某处的论坛帖子中找到此建议;这样做可以让我再次正确地击中控件中的断点,但是Request对象中不再有任何通配符值可用。不好。 - 在页面选项卡、URL 选项卡和其他位置上的“保存”,以防万一出现某些损坏,重新保存会以某种方式重置。完全在黑暗中拍摄,但在极少数情况下,这曾经奏效过。这里没有帮助。
【问题讨论】:
标签: url-routing wildcard kentico