Получить медиа-URL, включая серверную часть

Возможно ли получить URL-адрес с MediaManager.GetMediaUrl, который всегда включает в себя часть сервера?

Ответ 1

Просто, чтобы это произошло, в Sitecore 7 параметр AlwaysIncludeServerUrl также включен в MediaUrlOptions (я не знаю, с какой версии Sitecore)

Вот так:

MediaUrlOptions muo = new MediaUrlOptions();
muo.AlwaysIncludeServerUrl = true;
String url = MediaManager.GetMediaUrl((MediaItem)item, muo);

Ответ 2

Я обнаружил, что для создания полнофункциональных URL-адресов для медиа-элементов будет работать следующее:

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;
}

Произведенные URL будут относиться к item, поэтому вы можете указать ссылку на свой домашний элемент вместо Sitecore.Context.Item

Ответ 3

Недавно я ответил на аналогичный вопрос в Stack Overflow. Я считаю, что ответ относится и к вашим.

Краткое описание: для этого нет никакой конфигурации, вам нужно переопределить некоторые из встроенных методов для этого. См. Приведенную выше ссылку для получения точных данных.

Ответ 4

Да, вы можете это сделать!

Правильный способ установки этого параметра указывается в файле конфигурации в разделе linkManager, где у вас есть это и остальные параметры, касающиеся того, как будут разрешены ваши URL-адреса. Здесь весь раздел, вас интересует параметр 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>