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檔案Uriif (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, "../");