是否可以获得始终包含服务器部分的MediaManager.GetMediaUrl
的网址?
答案 0 :(得分:8)
为了突破这一点,在Sitecore 7中,AlwaysIncludeServerUrl
选项也包含在MediaUrlOptions
中(我不知道自哪个版本的Sitecore)
像这样:
MediaUrlOptions muo = new MediaUrlOptions();
muo.AlwaysIncludeServerUrl = true;
String url = MediaManager.GetMediaUrl((MediaItem)item, muo);
答案 1 :(得分:3)
我发现以下内容适用于为媒体项目生成完全限定的网址:
public static string GetMediaUrlWithServer(MediaItem mediaItem, Item item = null)
{
item = item ?? Sitecore.Context.Item;
var options = new UrlOptions {AlwaysIncludeServerUrl = true, AddAspxExtension = false};
var itemUrl = LinkManager.GetItemUrl(item, options);
var mediaOptions = new MediaUrlOptions {AbsolutePath = true};
var mediaUrl = MediaManager.GetMediaUrl(mediaItem, mediaOptions);
return itemUrl + mediaUrl;
}
生成的网址将与item
相关,因此您可能希望提供对您的Home项目的引用,而不是Sitecore.Context.Item
答案 2 :(得分:0)
我最近在Stack Overflow上回答了a similar question。我相信答案也适用于你的。
简短摘要:没有配置可以执行此操作,您需要覆盖一些内置方法来执行此操作。有关详细信息,请参阅上面的链接。
答案 3 :(得分:0)
是的,你可以做到!
设置此参数的正确方法是在 linkManager 部分的配置文件中指定,其中包含有关如何解析网址的其余设置。以下是整个部分,您对 alwaysIncludeServerUrl 参数感兴趣:
<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel"
alwaysIncludeServerUrl="true"
addAspxExtension="true"
encodeNames="true"
languageEmbedding="asNeeded"
languageLocation="filePath"
shortenUrls="true"
useDisplayName="false" />
</providers>
</linkManager>