Sitecore LinkManager ExpandDynamicLinks无法解析站点URL

时间:2014-09-24 17:48:53

标签: c# sitecore sitecore7

我在Sitecore中遇到ExpandDynamicLinks问题。

我使用以下方法将true传递给siteResolving。问题是网站没有得到承诺的解决。

bodyExpandedLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(email.Body.Value, true);

我确实在我的提供商中设置了永远不会解析该网站的原因,因为这是我想要的整个网站,除了上面的这个电子邮件正文。

 alwaysIncludeServerUrl="false"

有人知道如何强迫它吗?

谢谢...

3 个答案:

答案 0 :(得分:0)

我找到了另一种方法。

我确实添加了一个额外的链接提供程序,具有相同的配置,但是我设置为true的alwaysIncludeServerUrl。

<add name="sitecore_expandlinks" alwaysIncludeServerUrl="true" (...) >

然后我使用API​​获得了提供者。

bodyExpandedLinks = Sitecore.Links.LinkManager.Providers["sitecore_expandlinks"].ExpandDynamicLinks(email.Body.Value, true);

如果其他人有更具凝聚力的选择,我将非常感激

感谢。

答案 1 :(得分:0)

一个选项可能是在调用AlwaysIncludeServerUrl之前检查ExpandDynamicLinks是否设置为False。如果它为False,您可以显式调用Sitecore.Links.UrlOptions.DefaultOptions.AlwaysIncludeServerUrl = true,然后在调用ExpandDynamicLinks后将其设置为False。

答案 2 :(得分:0)

我知道这篇文章是用sitecore7标记的,但我想分享Sitecore 8.1的解决方案。我不知道它是否适用于7。它改编自Sitecore.Links.LinkProvider.ExpandDynamicLinks()

var linkParser = new LinkProvider.LinkParser();
var urlOptions = LinkManager.Provider.GetDefaultUrlOptions(); // returns a clone.
urlOptions.SiteResolving = true;
urlOptions.AlwaysIncludeServerUrl = true;
text = linkParser.ExpandDynamicLinks(text, urlOptions);

这不适用于媒体链接,因为Sitecore.Links.DynamicLink.BuildMediaUrl()Sitecore.Links.MediaLinkExpander.Expand()完全忽略了他们的UrlOptions参数。如果您需要完整的媒体网址,请使用以下代码包装您的代码:

using (new SettingsSwitcher("Media.AlwaysIncludeServerUrl", "true"))
{
    phrase = linkParser.ExpandDynamicLinks(phrase, urlOptions);
}