C# 获取包含服务器部件的媒体url

C# 获取包含服务器部件的媒体url,c#,sitecore,C#,Sitecore,是否可以使用始终包含服务器部分的MediaManager.GetMediaUrl获取url?我最近刚刚回答了堆栈溢出问题。我相信答案也适用于你的 简短摘要:没有配置来执行此操作,您需要重写一些内置方法来执行此操作。有关详细信息,请参见上面的链接。我发现以下内容可用于为媒体项生成完全限定的URL: 公共静态字符串GetMediaUrlWithServer(MediaItem MediaItem,Item Item=null) { item=item??Sitecore.Context.item;

是否可以使用始终包含服务器部分的
MediaManager.GetMediaUrl
获取url?

我最近刚刚回答了堆栈溢出问题。我相信答案也适用于你的


简短摘要:没有配置来执行此操作,您需要重写一些内置方法来执行此操作。有关详细信息,请参见上面的链接。

我发现以下内容可用于为媒体项生成完全限定的URL:

公共静态字符串GetMediaUrlWithServer(MediaItem MediaItem,Item Item=null)
{
item=item??Sitecore.Context.item;
var options=newurlpoptions{alwaysincluderserverurl=true,AddAspxExtension=false};
var itemUrl=LinkManager.GetItemUrl(项目,选项);
var mediaOptions=newmediaurloptions{AbsolutePath=true};
var mediaUrl=MediaManager.GetMediaUrl(mediaItem,mediaOptions);
返回itemUrl+mediaUrl;
}

生成的URL将与
项目相关,因此您可能希望提供对您的主项目的引用,而不是
Sitecore.Context.item

只是为了提高这一点,在Sitecore 7中
AlwaysIncludeServerUrl
选项也包含在
MediaUrlOptions
中(我不知道是哪个版本的Sitecore)

像这样:

MediaUrlOptions muo=newmediaurloptions();
muo.alwaysincluderserverurl=true;
字符串url=MediaManager.GetMediaUrl((MediaItem)项,muo);
是的,你可以做到

设置此参数的正确方法是在配置文件的链接管理器部分中指定,在该部分中,您可以设置URL解析方式的其他设置。以下是整个部分,您对alwaysIncludeServerUrl参数感兴趣:


不要认为这适用于MediaManager.GetMediaUrl