升级到 11 后 Kentico 和通配符 URL 出现问题

Problems with Kentico and Wildcard URLs after upgrade to 11

前言:

这个问题对于 Stack Overflow 来说可能太具体了。 我还在 Kentico 论坛上 post 编辑了它:https://devnet.kentico.com/questions/problems-with-kentico-and-wildcard-urls-after-upgrade-to-11

剧情简介:

升级到 Kentico 11 后,我的通配符设置似乎不再正常工作。经过大量挖掘和研究,我认为问题出在 Kentico 用于将通配符值映射到 URL 参数的机制中的某个地方......但我不知道如何研究该过程以尝试和找出问题所在 and/or 如何解决。

详情:

我的页面设置了以下“标准 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 路径中使用您的通配符路径,我会得到您的错误。 但是,如果我使用通配符路径作为页面别名,我可以获得所有通配符参数。 https://www.screencast.com/t/jj2DesUrsGLR

最好, 马特

原来这其实是Kentico 11.0.0的一个bug。 我最终联系了 Kentico 支持,他们对其进行了修复。

该错误已由 Kentico 11.0.7 修补程序解决。