1. 程式人生 > >uri路徑獲取的三種方法

uri路徑獲取的三種方法

概述

SilverLight程式需要直接訪問或者載入,承載該SilverLight專案的Web專案中的某個頁或者資源時,我們需要取Web的Uri才能夠進行下步操作。

基礎

URI 是 Intranet 或 Internet 上可由應用程式使用的資源的一種簡潔表示形式。Uri 類定義了屬性和方法來處理 URI,包括分析、比較和組合。

Uri 類屬性是隻讀的;若要建立可修改的物件,請使用 UriBuilder 類。

相對 URI(例如"/new/index.htm")必須相對於基 URI 展開,這樣才是絕對的。提供了 MakeRelativeUri 方法,以便在必要時將絕對 URI 轉換為相對 URI。

如果 URI 字串是格式良好的 URI 並且包括方案識別符號,Uri 建構函式將不會轉義 URI 字串。

Uri 屬性用轉義編碼返回規範化資料表示形式,任何 Unicode 值大於 127 的字元都會被替換為等效的十六進位制數。為使 URI 具有規範化格式,Uri 建構函式執行以下步驟:

  • 將 URI 方案轉換為小寫。

  • 將主機名轉換為小寫。

  • 如果主機名為 IPv6 地址,則使用規範化 IPv6 地址。ScopeId 和其他可選的 IPv6 資料將被移除。

  • 移除預設埠號和空埠號。

  • 通過壓縮 /./、/../、// 等序列(包括轉義表示形式),規範化分層 URI 的路徑。請注意,在某些方案中,不壓縮轉義表示形式。

  • 對於分層 URI,如果主機未以正斜槓 (/) 結尾,則新增一個正斜槓。

  • URI 中的任何保留字元都要根據 RFC 3986 進行轉義。

在某些方案的建構函式中,作為規範化工作的一部分,將壓縮轉義表示形式。其 URI 將壓縮轉義序列的方案包括:file、http、https、net.pipe 和 net.tcp。對於其他所有方案,不壓縮轉義序列。例如:如果您將兩個點".."編碼為百分號形式的"%2E%2E",則對於某些方案,URI 建構函式將壓縮此序列。例如,下面的程式碼示例演示了 http 方案的 URI 建構函式。

程式碼

方法一:

複製程式碼 //獲取指定要呈現的xaml內容的包活xaml檔案Uri
var strFullUrl = Application.Current.Host.Source.AbsoluteUri;
if (strFullUrl.IndexOf("ClientBin") >0)
{
var uristr
= strFullUrl.Substring(0, strFullUrl.IndexOf("ClientBin")) +"Report/Default.aspx";
var uri
= new Uri(uristr);
}
複製程式碼

方法二:

var uri =new Uri(App.Current.Host.Source, "../Report/Default.aspx");

方法三:

string url = System.Windows.Browser.HtmlPage.Document.DocumentUri.ToString();
var struri
= url.Substring(0, url.LastIndexOf("/")) +"/Report/Default.aspx";
var uri
= new Uri(struri);

方法四:

獲取網頁根目錄

var xapUri = Application.Current.Host.Source;
var uri
= new Uri(xapUri, "../");