Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sitecore LinkManager ExpandDynamicClinks未解析站点URL_C#_Sitecore_Sitecore7 - Fatal编程技术网

C# Sitecore LinkManager ExpandDynamicClinks未解析站点URL

C# Sitecore LinkManager ExpandDynamicClinks未解析站点URL,c#,sitecore,sitecore7,C#,Sitecore,Sitecore7,我对Sitecore中的ExpandDynamicClinks有问题 对于sitesolution,我使用以下方法传递true。问题在于,该网站并没有按照承诺得到解决 bodyExpandedLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(email.Body.Value, true); 我确实在我的提供商中设置了永远不要解析该站点,因为除了上面的邮件正文之外,这是我对整个站点的要求 alwaysIncludeServerUrl="

我对Sitecore中的
ExpandDynamicClinks
有问题

对于
sitesolution
,我使用以下方法传递
true
。问题在于,该网站并没有按照承诺得到解决

bodyExpandedLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(email.Body.Value, true);
我确实在我的提供商中设置了永远不要解析该站点,因为除了上面的邮件正文之外,这是我对整个站点的要求

 alwaysIncludeServerUrl="false"
有人知道怎么强迫吗


谢谢…

我找到了另一种方法

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

<add name="sitecore_expandlinks" alwaysIncludeServerUrl="true" (...) >
如果其他人有更具凝聚力的选择,我将不胜感激


谢谢。

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

后将其设置回False。我知道这篇文章被标记为sitecore7,但我想分享Sitecore 8.1的解决方案。我不知道它对7人是否有效。它改编自
Sitecore.Links.LinkProvider.ExpandDynamicLinks()

这不适用于媒体链接,因为
Sitecore.links.DynamicLink.BuildMediaUrl()
Sitecore.links.MediaLinkedExpander.Expand()
完全忽略其URL选项参数。如果需要完整的媒体URL,请使用以下内容包装代码:

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

此属性是只读的:/“属性或索引器”Sitecore.Links.LinkManager.AlwaysIncludeServerUrl“无法分配给--它是只读的”已更新我的答案。不确定这是否有效,但可能值得一试!最好是使用新的linkManager配置,只包含服务器url。谢谢
var linkParser = new LinkProvider.LinkParser();
var urlOptions = LinkManager.Provider.GetDefaultUrlOptions(); // returns a clone.
urlOptions.SiteResolving = true;
urlOptions.AlwaysIncludeServerUrl = true;
text = linkParser.ExpandDynamicLinks(text, urlOptions);
using (new SettingsSwitcher("Media.AlwaysIncludeServerUrl", "true"))
{
    phrase = linkParser.ExpandDynamicLinks(phrase, urlOptions);
}