【问题标题】:Problems with Kentico and Wildcard URLs after upgrade to 11升级到 11 后 Kentico 和通配符 URL 的问题
【发布时间】: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


    【解决方案1】:

    我能够重现这一点,并且似乎找到了解决方法。

    如果我在页面的 URL 路径中使用您的通配符路径,我会收到您的错误。 但是,如果我使用通配符路径作为页面别名,我可以获得所有通配符参数。 https://www.screencast.com/t/jj2DesUrsGLR

    最好, 马特

    【讨论】:

    • 有趣。不幸的是,当我尝试添加该别名时,它告诉我存在冲突并且不允许我添加它。我会继续戳它,看看我是否能弄清楚它在哪里碰撞并修复它。
    • 您可能已经这样做了,但您可能需要先从 URL 路径字段中删除通配符路径,然后再将其添加为页面别名。
    • 我确实尝试过。我们的应用程序中实际上有许多通配符 URL,结果发现它与另一个冲突。出于测试目的,我最终删除了另一个,但我仍然遇到问题......我已经联系了 Kentico 支持 - 他们已经能够复制它并将其传递给开发团队。所以听起来它可能是一个错误,或者至少是从 K8.1 的变化。无论如何,感谢你的帖子,因为它给了我一些想法,最终让我发现了足够的东西让支持人员知道发生了什么。
    【解决方案2】:

    事实证明,这实际上是 Kentico 11.0.0 中的一个错误。 我最终联系了 Kentico 支持,他们对其进行了热修复。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2011-03-20
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      相关资源
      最近更新 更多