[小菜一碟] ASP.NET 的相對路徑使用 /(Slash)跟 ~/(Tilde Slash)的區別

無論我們是要引用網站的資源,還是做重新導向,除非是外部的資源,不然使用相對路徑絕對是優選,在 ASP.NET 的世界裡面我們用來表達根目錄有人會用 /(Slash),有人會用 ~/(Tilde Slash),但它們兩個的差別在哪?

公佈答案,/ 代表的是網站根目錄,~/ 代表的是應用程式根目錄,我用範例來說明,底下我在 IIS 弄了個網站,而網站的實體路徑指向某個 ASP.NET MVC 的應用程式。

當我瀏覽首頁的時候我強制重新導向到登入頁,用 / 跟 ~/ 都測試看看。

測試結果是「沒差別」,都能正確重新導向到登入頁。

然後我在網站底下新增一個 abc 應用程式,實體路徑指向跟網站相同的應用程式。

這時候 / 跟 ~/ 就有差別了,我們瀏覽 abc 就會發現 ~/ 是導向 abc 的登入頁。

幹程式設計這一行遇到相同問題但不同解法,卻不知其所以然就是替自己在未來埋下一顆地雷,何時會踩中自爆不知道。

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學