MvcSiteMapProvider - 修改节点 url

MvcSiteMapProvider - modify node url

我有一个分布式 mvc asp.net Web 应用程序。应用程序的 UI 分为不同的组件,每个组件都有不同的主机值,这意味着应用程序对 UI 的不同部分具有不同的 URL。有一个跨不同组件共享的 XML 站点地图文件。站点地图中的节点使用相对 URLs 和一个指示应该使用什么主机值的属性,主机值存储在配置文件中——这是因为应用程序存在于几个不同的环境中,因此硬编码站点地图中的完全限定 URL 不实用。

考虑到所有这些,当站点地图节点在某些导航 link 中呈现时,我必须修改节点的 URL 以使用正确的主机使​​其完全合格。我可以使用 .net SiteMapNode class.

轻松做到这一点

我的问题是我需要对 MvcSiteMapProvider 做一些类似的事情。到目前为止,我运气不佳。欢迎提出建议。

我正在尝试 here 中讨论的方法,即使用自定义 ISiteMapNodeUrlResolver。

默认实现已将主机名替换为 xml 站点地图文件中可选提供的 hostName 属性。在我的自定义实现中,我查找了基于 hostName 属性的配置设置,以根据配置设置进行运行时修改。

到目前为止,它似乎在按需工作。