我在生产服务器中遇到了一种奇怪的行为。 我们有三台服务器,有时候MediaManager.GetMediaUrl似乎没有返回文件扩展名。首先我认为一台服务器可能有不同的设置。我比较了三台服务器上的所有配置,它们是相同的。 令人惊讶的是,我注意到如果我从同一台服务器浏览同一页面,我可以复制问题。
我检查了Media.RequestExtension的值,并且所有三个都与以下相同
<setting name="Media.RequestExtension" value=""/>
我不能在我们的任何环境(本地,测试,登台)上复制问题
我添加了metatag并硬编码了服务器名称,并将usercontrol的Cacheable属性设置为false,我确定它不是缓存问题。
var images = new List<string>();
var imageField1 = (Sitecore.Data.Fields.ImageField)Sitecore.Context.Item.Fields["og Image1"];
if (imageField1 != null && imageField1.MediaItem != null)
{
var image1Url = MediaManager.GetMediaUrl(imageField1.MediaItem);
images.Add(image1Url);
}
有没有人遇到过同样的问题?
答案 0 :(得分:0)
即使我在媒体项目网址中遇到了这个扩展问题。 此问题的解决方法是使用 MediaUrlOptions 对象的 IncludeExtension 属性。
MediaUrlOptions mediaUrlOpts = new MediaUrlOptions();
mediaUrlOpts.IncludeExtension = false;
Response.Write(MediaManager.GetMediaUrl(item, mediaUrlOpts ));
如果您想要始终为网址添加扩展程序,请将 IncludeExtension 设置为true。