2010-12-11 57 views
1

我有一個實現URL路由的ASP.NET 4.0應用程序。這爲我提供了沒有擴展名的網頁網址(例如/ Articles/{title})具有擴展名的URL的相對鏈接

其中一些頁面包含相對鏈接。當我從Visual Studio測試站點時,相關鏈接指向/ Articles/{title}/mylink。但是,當我將我的網站部署到共享主機帳戶時,相同的相對鏈接指向/ Articles/mylink。

您可以在http://blackbeltcoder.com/Articles/asp/creating-website-thumbnails-in-asp-net處看到問題。靠近頂部的圖像鏈接已損壞。從Visual Studio進行測試時,此頁面正常工作。 {title}被認爲是一個目錄。但是,一旦部署,{title}被假定爲頁面名稱。

如果我在上面的URL中追加「/」,它會按預期工作。但是,我怎樣才能確保它始終有效?

任何人都可以幫助我理解這一點嗎?

+0

此問題仍然無法解決。我花了幾個小時在網上搜索。但事實是,我只是不明白是什麼導致了差異,因此不知道在哪裏尋找解決方案。 – 2010-12-11 23:23:22

回答

0

經過與本網站和另一個也使用URL路由的廣泛測試後,我終於能夠定義發生了什麼。

我將描述此網站在託管帳戶上的行爲方式爲「正常」。在我的桌面上運行時,我的其他網站同樣適用於主機帳戶。 (雖然其他網站沒有使用這種方式的相對鏈接。)

奇怪的情況是當我在我的桌面上運行新的網站。瀏覽器會自動將「/」附加到路由URL中,就像它們是目錄一樣。

而這樣做的原因是因爲我創建了具有相同名稱的物理目錄!如果我刪除物理目錄,它會將URL視爲對文件的引用。

所以對我來說最主要的問題是我在開發這個網站的同時測試這個奇怪的例子。因此,解決方案是A)確保「/」被附加到所有這些鏈接,因此它們被認爲是目錄,或者B)改變我設計的目錄結構。