文章目錄
1.Request.CurrentExecutionFilePath 擷取當前請求的虛擬路徑,不同於 FilePath,差別在於如果請求已在伺服器代碼中被重新導向,則 CurrentExecutionFilePath 就是正確的
格式: /虛擬目錄名/Default.aspx /FilePath/ Default.aspx
2.Request.ApplicationPath 擷取伺服器上 ASP.NET 應用程式的虛擬應用程式根路徑。無論在該應用程式的什麼地方請求該路徑。
格式: /虛擬目錄名(應用程式名稱) /FilePath
以上都是虛擬目錄中的檔案路徑,即是IIS中的路徑。要得到真正的實體路徑要在得到以上路徑的基礎上再加:
3. Server.MapPath(Request.ApplicationPath +"/File/XMLFile.xml") 映射虛擬路徑為實體路徑
格式:E:\ FilePath\File\ XMLFile.xml
4. Request.FilePath 或 Request.Path 擷取當前請求的虛擬路徑
格式:/FilePath/Default.aspx
5. Request.PhysicalPath; 擷取與請求的 URL 對應的物理檔案系統路徑
格式:E:\FilePath\Default.aspx
6. Request.PhysicalApplicationPath; 應用程式的實體路徑
格式:E:\FilePath\
7. Request.Url.AbsoluteUri 全部URL
格式:http://localhost:19413/FilePath/Default.aspx
8. Request.UrlReferrer. AbsoluteUri 可以擷取用戶端上次請求的url的有關資訊 具體說明:假如由Default.aspx頁面跳轉到Default1.aspx,在Default1.aspx頁面後台代碼中,書寫上面的代碼,可以得知是從Default.aspx跳轉來的。
格式:http://localhost:19413/FilePath/Default.aspx
9. Request.Url.Host
格式:本地是localhost,發布後是www.test.com類似的形式
10. Request.Url.LocalPath 或 Request.Url.AbsolutePath
格式:/FilePath/Default.aspx
11. Request.RawUrl 獲得網址帶變數
格式:/FilePath/Default2.aspx?a=hello
Request.UrlReferrer.AbsoluteUri 獲得網址不帶變數
格式:http://localhost:19413/FilePath/Default.aspx
12. 當url中帶參數時可以使用:
HttpContext.Current.Request.Url.PathAndQuery
格式:/FilePath/Default2.aspx?a=hello
用戶端元素
用戶端元素是頁面上的非 Web 伺服器控制項元素,它們將按原樣被傳遞給瀏覽器。因此,從用戶端元素中引用資源時,應根據 HTML 中 URL 的標準規則構造路徑。可以使用完整 URL 路徑(又稱為絕對 URL 路徑),也可以使用各種類型的相對路徑。例如,如果頁麵包含 img 元素,則可以使用以下路徑之一設定其 src 屬性:
絕對 URL 路徑。如果引用其他位置(例如外部網站)中的資源,則絕對 URL 路徑非常有用。
<img src="http://www.contoso.com/MyApplication/Images/SampleImage.jpg" />
網站根目錄相對路徑,此路徑將根據網站根目錄(而非應用程式根目錄)進行解析。如果將跨應用程式的資源(例像或用戶端指令碼檔案)保留在網站根目錄下的檔案夾中,則網站根目錄相對路徑非常有用。
此樣本路徑假定 Images 檔案夾位於網站根目錄下。
<img src="/Images/SampleImage.jpg" />
如果您的網站為 http://www.contoso.com,則此路徑將解析為以下形式。
http://www.contoso.com/Images/SampleImage.jpg
下面是一個根據當前頁面路徑解析的相對路徑。
<img src="Images/SampleImage.jpg" />
解析為當前頁面路徑對等的相對路徑。
<img src="../Images/SampleImage.jpg" />
| 注意 |
預設情況下,瀏覽器使用當前頁面的 URL 作為解析相對路徑的基準。但是,您可以在頁面中包含 HTML base 元素,以指定替代基路徑。 |
伺服器控制項
在引用資源的 ASP.NET 伺服器控制項中,可以使用絕對路徑或相對路徑,這一點與用戶端元素一樣。如果使用相對路徑,則相對於頁面、使用者控制項或包含該控制項的主題的路徑進行解析。例如,假設 Controls 檔案夾中包含一個使用者控制項。該使用者控制項包含一個 Image Web 伺服器控制項,此伺服器控制項的 ImageUrl 屬性被設定為以下路徑:Images/SampleImage.jpg。
當該使用者控制項運行時,上述路徑將解析為以下形式:/Controls/Images/SampleImage.jpg。無論承載該使用者控制項的頁面位於何處,結果都是如此。
| 注意 |
在主控頁中,資源的路徑基於內容頁的路徑進行解析。有關更多資訊,請參見 ASP.NET 主版頁面概述。 |
伺服器控制項中的絕對和相對路徑引用具有以下缺點:
為克服這些缺點,ASP.NET 包括了 Web 應用程式根目錄運算子 (~),當您在伺服器控制項中指定路徑時可以使用該運算子。ASP.NET 會將 ~ 運算子解析為當前應用程式的根目錄。可以結合使用 ~ 運算子和檔案夾來指定基於當前根目錄的路徑。
下面的樣本示範了使用 Image 伺服器控制項時用於為映像指定根目錄相對路徑的 ~ 運算子。在此樣本中,無論頁面位於網站中的什麼位置,都將從位於 Web 應用程式根目錄下的 Images 檔案夾中直接讀取影像檔。
<asp:image runat="server" id="Image1"
ImageUrl="~/Images/SampleImage.jpg" />
可以在伺服器控制項中的任何與路徑有關的屬性中使用 ~ 運算子。~ 運算子只能為伺服器控制項識別,並且位於伺服器代碼中。不能將 ~ 運算子用於用戶端元素。
| 注意 |
僅 限於移動頁,如果您的應用程式依賴於無 Cookie 會話或者可能收到來自行動裝置的需要無 Cookie 會話的請求,則在路徑中使用波狀符號(“~”)會導致意外建立新會話,並可能丟失會話資料。若要使用包含波狀符號(例如“~/路徑”)的路徑來設定行動控制項的 屬性,請先使用 ResolveUrl 方法解析該路徑,再將其分配給該屬性。 |