2013-11-04 60 views
2

我剛剛將Sitecore 6.5解決方案升級爲Sitecore 7.這是一個非常基礎的站點,所以沒有大問題。 雖然我遇到了一個問題。Sitecore媒體src路徑錯誤?

我想要在xslt中獲取圖像項目的src。我這樣做,

sc:fld('myImage',.,'src') 

的這個輸出是~/media/folder/myimage.ashx

但由於某些原因,這並不工作 - 這意味着沒有顯示的圖像。當我複製src並嘗試直接在新標籤中打開我時,我將重定向到Sitecore登錄。圖像上沒有安全設置。

後來我發現,在使用SC時:圖像,例如,我要找到另一個SRC,它的工作原理: /sitecore/shell/~/media/folder/myimage.ashx 但上面不看我的權利?

這是怎麼回事,我該如何解決它?除了站點定義和數據文件夾路徑,我在web.config中沒有任何改變。否則它是完整的股票。

+0

嘗試使用桌面上的Access Viewer來查看匿名對這些媒體項的權限。看起來就像鏈條上的某個地方沒有進行安全檢查,Access Viewer將解釋爲什麼訪問被拒絕。 –

+0

@KamFigy只是雙重檢查了安全性,一切正常。媒體項目沒有限制,所以這不是問題。正如我所看到的那樣,問題是圖像的路徑,這看起來很不對。至少與sitecore/shell工作,不應該看起來像我猜測? – brother

+0

當您獲取/ sitecore/shell路徑時,您是否在預覽模式下查看? –

回答

4

前綴SC的輸出:FLD用斜槓「/」這樣的完整路徑變得

/~/media/folder/myimage.ashx 
0

現在你可以使用sc:field代替sc:fld,您將得到友好的URL

0

它往往是讓人們感到困惑,所以讓我們來看看Sitecore生成和處理媒體請求的方式。這會讓你理解它是如何在sc:field()的「帽子下」工作的。

首先,檢查你的配置。 MediaLinkPrefix指定在呈現HTML時您的媒體前綴。

<setting name="Media.MediaLinkPrefix" value="~/media/" /> 

在第二步儘快HTML形成和鏈路包含href屬性中所需的介質前綴,你的進一步步驟是建立一個處理程序來處理這些鏈接。它可以在下面的配置customHandlers節點中設置來完成:

<handler trigger="~/media/" handler="sitecore_media.ashx" /> 

最後,你需要關聯你確切的代碼,將您的服務器請求處理。比如下配置中HttpHandlers的節點:

<add verb="*" path="sitecore_media.ashx" type="Namespace.ClassName, YourLibrary" /> 

如果您MediaPrefix正在產生相對鏈接,請確保所產生的路徑是正確的比較你的網站的根。用'/'開始相對路徑將確保。

希望這可以很好地解釋這種機制,但請隨時就Sitecore中的工作原理提出進一步問題。

乾杯!