asp.net後台擷取路徑的各種方法歸納

來源:互聯網
上載者:User
文章目錄
  • 用戶端元素
  • 伺服器控制項

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 方法解析該路徑,再將其分配給該屬性。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.