2014-02-24 73 views
0

我在我們的生產服務器中遇到了一個奇怪的行爲。 我們有三臺服務器,有時MediaManager.GetMediaUrl似乎沒有返回文件擴展名。首先,我認爲一臺服務器可能有不同的設置。我比較了三臺服務器上的所有配置,它們是相同的。 令人驚訝的是,我注意到如果我從同一臺服務器瀏覽同一頁面,我可以複製問題。Sitecore中隨機缺失的圖像文件擴展名

我檢查Media.RequestExtension的價值,併爲所有三是下同

<setting name="Media.RequestExtension" value=""/> 

我不能複製上沒有

我增加了我們的環境(本地測試,分期)的問題元標記並對服務器名稱進行硬編碼,並將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

您是否嘗試清除所有服務器上的sitecore媒體緩存?你可以嘗試確定哪一臺服務器導致這個問題?也許您可以簡單地從負載平衡器中取下該服務器,並檢查問題是否得到解決。 – xoail

+0

您是否也可以將語言添加到您的mediaurl中?我遇到這個問題,我不知道是否真的是一樣的,但我添加了語言mediaurl,它的工作原理:MediaUrlOptions mediaUrlOptions = new MediaUrlOptions {Language = Sitecore.Context.Language}; return Sitecore.StringUtil.EnsurePrefix('/',MediaManager.GetMediaUrl(item,mediaUrlOptions)); – 2014-02-25 08:06:26

回答

0

即使我在媒體項目網址上遇到了這個延期問題。 解決此問題的方法是利用IncludeExtension屬性MediaUrlOptions對象。

MediaUrlOptions mediaUrlOpts = new MediaUrlOptions(); 
mediaUrlOpts.IncludeExtension = false; 
Response.Write(MediaManager.GetMediaUrl(item, mediaUrlOpts)); 

如果你想隨時添加擴展URL,然後設置IncludeExtension爲true。