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

Можно ли получить URL с MediaManager.GetMediaUrl что всегда включает в себя серверную часть?

4 ответа

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

Как это:

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

Я обнаружил, что следующее будет работать для создания полностью определенных 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

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

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

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

Правильный способ установки этого параметра - указать в файле конфигурации в разделе 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>
Другие вопросы по тегам