2010-12-11 148 views
1

我正在建立一個網站,存儲一些文章。每篇文章的URL以/ Articles/{categoryid}/{articleslug}的形式實現URL路由。URL路由和相關鏈接行爲

有些文章鏈接到圖形文件。該鏈接沒有指定完整路徑,因此我將圖形文件存儲在/Articles/{categoryid}/{articleslug}/graphic.jpg。

這在我的桌面上正常工作。但是,當我將該網站部署到共享主機帳戶時,行爲是不同的。

現在,只有我將圖形文件存儲在/Articles/{categoryid}/graphic.jpg時,鏈接纔有效。換句話說,在我的桌面上,{articleslug}被假定爲一個目錄,但在網絡上它被假定爲當前頁面的名稱。

有誰知道爲什麼行爲改變?你可以在http://www.blackbeltcoder.com/Articles/asp/creating-website-thumbnails-in-asp-net看到一個例子。靠近頂部的屏幕截圖和下載鏈接都是斷開的鏈接。

+0

我剛纔注意到,如果我在上面的URL中添加一個'/',那麼它會被假定爲一個目錄名稱,並且鏈接工作正常。但我仍然不明白爲什麼我不需要在我的桌面上,或者如果我可以控制這一點。 – 2010-12-11 00:01:56

+0

除了在我對joelt的評論中描述的開發服務器vs IIS之外,我傾向於在頁面中指定一個標記。這樣,我應該能夠精確地控制相關鏈接的含義。 – 2010-12-11 03:02:07

回答

0

感謝您的意見。除非他們已經明確瞭解這個問題,否則任何人都可以解決這個問題。

無論如何,我能夠自己解決它,並在我發佈在Relative Links with Extension-less URLs處的相關問題中描述瞭解決方案。

謝謝。

0

不知道更多,它似乎最有可能的原因將是一個不同的版本或配置的IIS。網頁主機的行爲具有各種意義;你的桌面行爲令我感到困惑。您的桌面是否從/ Articles/{categoryid}/{articleslug}重定向到/ Articles/{categoryid}/{articleslug} /?你可以使用Fiddler等來查看瀏覽器是否以不同的方式格式化GET請求?

+0

其他人指出,開發服務器通過ASP.NET處理程序處理所有請求,但IIS不處理。他表示,如果一個URL在IIS上以.aspx結尾,那麼它很好。如果它看起來像IIS的目錄URL,那麼默認情況下它不會通過ASP.NET處理程序發送。這似乎是爲什麼我從Visual Studio中運行不同的行爲。 – 2010-12-11 02:58:56

+0

要更具體地回答您的問題,我沒有做任何重定向。我正在使用ASP.NET 4.0 URL路由。我想我已經安裝了Fiddler,但不知道我會在找什麼。我是一名開發人員,但不是管理員/ IIS人員。儘管繼續努力,但這個問題仍未解決。 – 2010-12-11 16:32:02

+1

我不認爲以.aspx結尾的網址很重要。如果這是問題,則您的網站在Web服務器上根本無法工作。較新版本的IIS沒有這個問題。我只在我的機器上運行了一個測試,該機器具有與ASP.NET MVC 1一起部署的路由庫的版本,其行爲與Web服務器類似。您可以嘗試在您的bin目錄中部署您的路由dll版本並引用該版本,而不是GAC,然後查看會發生什麼情況。 – joelt 2010-12-11 23:05:43