URI 配置

有幾個可供您用來參考您的應用程式套件、您的應用程式資料的資料夾或雲端之檔案的 URI (統一資源識別項) 配置。 您也可以使用 URI 配置參考從您應用程式的檔案資源 (.resw) 載入的字串。 您可以在程式碼、XAML 標記、應用程式套件資訊清單或圖塊和快顯通知範本中,使用這些 URI 配置。

URI 配置的常見功能

本主題所述的所有配置都遵循一般 URI 配置規則來進行正規化和資源擷取。 如需 URI 的一般語法,請參閱 RFC 3986

所有 URI 配置都將 RFC 3986 的分層部分定義為 URI 的授權和路徑元件。

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
hier-part   = "//" authority path-abempty
            / path-absolute
            / path-rootless
            / path-empty

這表示 URI 基本上有三個元件。 緊接在 URI 配置的兩個正斜線後面的是一個稱為授權的元件 (可以為空) authority。 緊接著這就是 路徑。 以 URI http://www.contoso.com/welcome.png 為例,配置為「http://」,授權為「www.contoso.com」,路徑為「/welcome.png」。 另一個範例是 URI ms-appx:///logo.png,其中授權元件為空並採用預設值。

此片段元件會由本主題中所提及 URI 的配置特定處理所忽略。 在資源擷取和比較期間,片段元件沒有承載。 不過,特定實作上方的圖層可能會解釋片段以擷取次要資源。

所有 IRI 元件正規化之後,比較就會逐位元組發生。

不區分大小寫和正規化

本主題所述的所有 URI 配置都遵循一般 URI 規則 (RFC 3986),以進行配置正規化和資源擷取。 這些 URI 的正規化形式會維持大小寫和百分比解碼 RFC 3986 未保留的字元。

對於本主題中所述的所有 URI 配置,配置授權路徑若非按照標準不區分大小寫,就是由系統以不區分大小寫的方式處理。 注意:這個規則的唯一例外是ms-resource授權,它區分大小寫。

ms-appx 和 ms-appx-web

使用 ms-appxms-appx-web URI 配置來參照來自應用程式套件的檔案 (請參閱封裝應用程式)。 應用程式套件中的檔案通常是靜態影像、資料、程式碼和版面配置檔案。 ms-appx-web 配置會存取與 ms-appx 一樣的檔案,但位置是在網路區間。 如需範例和詳細資訊,請參閱參考 XAML 標記和程式碼中的影像或其他資產

配置名稱 (ms-appx 和 ms-appx-web)

URI 配置名稱是字串「ms-appx」或「ms-appx-web」。

ms-appx://
ms-appx-web://

授權 (ms-appx 和 ms-appx-web)

授權是套件資訊清單中定義的套件識別名稱。 因此,URI 和 IRI (國際化資源識別碼) 格式的限制為套件識別名稱中允許的字元集。 套件名稱必須是目前執行中應用程式套件相依性圖形中其中一個套件的名稱。

ms-appx://Contoso.MyApp/
ms-appx-web://Contoso.MyApp/

如果授權單位中出現任何其他字元,則擷取和比較失敗。 授權單位的預設值是目前正在執行的應用程式套件。

ms-appx:///
ms-appx-web:///

使用者資訊和連接埠 (ms-appx 和 ms-appx-web)

ms-appx 配置與其他熱門配置不同,不會定義使用者資訊或連接埠元件。 因為「@」和「:」不允許做為有效的授權單位值,所以如果包含查詢值,查詢將會失敗。 下列每一項都會失敗。

ms-appx://john@contoso.myapp/default.html
ms-appx://john:password@contoso.myapp/default.html
ms-appx://contoso.myapp:8080/default.html
ms-appx://john:password@contoso.myapp:8080/default.html

路徑 (ms-appx 和 ms-appx-web)

路徑元件符合一般 RFC 3986 語法,並支援 IRI 中的非 ASCII 字元。 路徑元件會定義檔案的邏輯或實體檔案路徑。 該檔案位於與授權單位所指定之應用程式安裝位置相關聯的資料夾中。

如果路徑參考實體路徑和檔名,則會擷取該實體檔案資產。 但如果找不到這類實體檔案,則在擷取期間傳回的實際資源會使用執行階段的內容交涉來決定。 此判斷是以應用程式、OS 和使用者設定為基礎,例如語言、顯示縮放比例、主題、高對比和其他執行階段內容。 例如,判斷要擷取的實際資源值時,可能會考慮應用程式語言、系統的顯示設定,以及使用者的高對比設定組合。

ms-appx:///images/logo.png

上述 URI 實際上可能會擷取目前應用程式套件內具有下列實體檔名的檔案。

\Images\fr-FR\logo.scale-100_contrast-white.png

您當然也可以藉由直接以完整名稱參照該實體檔案來擷取相同的實體檔案。

<Image Source="ms-appx:///images/fr-FR/logo.scale-100_contrast-white.png"/>

ms-appx(-web) 的路徑元件與通用 URI 一樣,區分大小寫。 不過,當存取資源的基礎文件系統不區分大小寫時,例如 NTFS,資源的擷取會不區分大小寫。

URI 的正規化形式會維持大小寫,以及百分比解碼 (後面接著兩位數十六進位表示法的「%」符號) RFC 3986 未保留的字元。 字元 “?”、“#”、“/”、“*” 和 '“' (雙引號字元) 必須在路徑中百分比編碼,才能表示檔案或資料夾名稱等資料。 所有百分比編碼字元都會在擷取之前解碼。 因此,若要擷取名為 Hello#World.html 的檔案,請使用此 URI。

ms-appx:///Hello%23World.html

查詢 (ms-appx 和 ms-appx-web)

在擷取資源期間會忽略查詢參數。 查詢參數的正規化形式會維持大小寫。 比較期間不會忽略查詢參數。

ms-appdata

使用 ms-appdata URI 配置來參照來自應用程式本機、漫遊和暫存資料資料資料夾的檔案。 如需這些應用程式資料資料夾的更多資訊,請參閱存放與擷取設定和其他應用程式資料

ms-appdata URI 配置不會執行 ms-appx 和 ms-appx-web 執行的執行階段內容協商。 但是,您可以使用 URI 中完整的實體檔名,回應 ResourceContext.QualifierValues 的內容,並從應用程式資料載入適當的資產。

配置名稱 (ms-appdata)

URI 配置名稱是字串「ms-appdata」。

ms-appdata://

授權 (ms-appdata)

授權是套件資訊清單中定義的套件識別名稱。 因此,URI 和 IRI (國際化資源識別碼) 格式的限制為套件識別名稱中允許的字元集。 套件名稱必須是目前執行中應用程式套件的名稱。

ms-appdata://Contoso.MyApp/

如果授權單位中出現任何其他字元,則擷取和比較失敗。 授權單位的預設值是目前正在執行的應用程式套件。

ms-appdata:///

使用者資訊和連接埠 (ms-appdata)

ms-appdata 配置與其他熱門配置不同,不會定義使用者資訊或連接埠元件。 因為「@」和「:」不允許做為有效的授權單位值,所以如果包含查詢值,查詢將會失敗。 下列每一項都會失敗。

ms-appdata://john@contoso.myapp/local/data.xml
ms-appdata://john:password@contoso.myapp/local/data.xml
ms-appdata://contoso.myapp:8080/local/data.xml
ms-appdata://john:password@contoso.myapp:8080/local/data.xml

路徑 (ms-appdata)

路徑元件符合一般 RFC 3986 語法,並支援 IRI 中的非 ASCII 字元。 在 Windows.Storage.ApplicationData 位置內是本機、漫遊和暫存狀態記憶體的三個保留資料夾。 ms-appdata 配置允許存取這些位置中的檔案和資料夾。 路徑元件的第一個區段必須以下列方式指定特定資料夾。 因此,「hier-part」的「path-empty」形式不合法。

本機資料夾。

ms-appdata:///local/

暫存資料夾。

ms-appdata:///temp/

漫遊資料夾。

ms-appdata:///roaming/

ms-appdata 的路徑元件與通用 URI 一樣,區分大小寫。 不過,當存取資源的基礎文件系統不區分大小寫時,例如 NTFS,資源的擷取會不區分大小寫。

URI 的正規化形式會維持大小寫,以及百分比解碼 (後面接著兩位數十六進位表示法的「%」符號) RFC 3986 未保留的字元。 字元 “?”、“#”、“/”、“*” 和 '“' (雙引號字元) 必須在路徑中百分比編碼,才能表示檔案或資料夾名稱等資料。 所有百分比編碼字元都會在擷取之前解碼。 因此,若要擷取名為 Hello#World.html 的本機檔案,請使用此 URI。

ms-appdata://local/Hello%23World.html

擷取資源,以及最上層路徑區段的識別,會在點正規化後處理 (「.././b/c」)。 因此,URI 無法將自己點出其中一個保留的資料夾。 因此,不允許使用以下 URI。

ms-appdata:///local/../hello/logo.png

但允許此 URI (雖然是多餘的)。

ms-appdata:///local/../roaming/logo.png

查詢 (ms-appdata)

在擷取資源期間會忽略查詢參數。 查詢參數的正規化形式會維持大小寫。 比較期間不會忽略查詢參數。

ms-resource

使用 ms-resource URI 配置以參照從應用程式資源檔 (.resw) 載入的字串。 有關資源檔的範例和詳細資訊,請參閱 當地語系化您的 UI 及應用程式套件資訊清單中的字串

配置名稱 (ms-resource)

URI 配置名稱是字串「ms-resource」。

ms-resource://

授權 (ms-resource)

授權是套件資源索引 (PRI) 中定義的最上層資源地圖,通常對應至套件資訊清單中定義的套件識別名稱。 請參閱封裝應用程式)。 因此,URI 和 IRI (國際化資源識別碼) 格式的限制為套件識別名稱中允許的字元集。 套件名稱必須是目前執行中應用程式套件相依性圖形中其中一個套件的名稱。

ms-resource://Contoso.MyApp/
ms-resource://Microsoft.WinJS.1.0/

如果授權單位中出現任何其他字元,則擷取和比較失敗。 授權的預設值是目前執行中應用程式的區分大小寫套件名稱。

ms-resource:///

授權區分大小寫,正規化形式會維持其大小寫。 不過,查詢資源時不區分大小寫。

使用者資訊和連接埠 (ms-resource)

ms-resource 配置與其他熱門配置不同,不會定義使用者資訊或連接埠元件。 因為「@」和「:」不允許做為有效的授權單位值,所以如果包含查詢值,查詢將會失敗。 下列每一項都會失敗。

ms-resource://john@contoso.myapp/Resources/String1
ms-resource://john:password@contoso.myapp/Resources/String1
ms-resource://contoso.myapp:8080/Resources/String1
ms-resource://john:password@contoso.myapp:8080/Resources/String1

路徑 (ms-resource)

此路徑會識別 ResourceMap 樹狀子目錄 (請參閱 資源管理系統) 和其中的 NamedResource 的階層式位置。 這通常會對應至資源檔案 (.resw) 的檔名 (不包括副檔名),以及其中字串資源的識別碼。

有關範例和更多資訊,請參閱當地語系化您的 UI 及應用程式套件資訊清單中的字串,以及對語言、縮放比例及高對比的圖塊與快顯通知支援

ms-resource 的路徑元件與通用 URI 一樣,區分大小寫。 但是,基礎擷取會執行 CompareStringOrdinal,並將 ignoreCase 設定為 true

URI 的正規化形式會維持大小寫,以及百分比解碼 (後面接著兩位數十六進位表示法的「%」符號) RFC 3986 未保留的字元。 字元 “?”、“#”、“/”、“*” 和 '“' (雙引號字元) 必須在路徑中百分比編碼,才能表示檔案或資料夾名稱等資料。 所有百分比編碼字元都會在擷取之前解碼。 因此,若要從名為 Hello#World.resw的資源檔擷取字串資源,請使用此 URI。

ms-resource:///Hello%23World/String1

查詢 (ms-resource)

在擷取資源期間會忽略查詢參數。 查詢參數的正規化形式會維持大小寫。 比較期間不會忽略查詢參數。 查詢參數會以區分大小寫來比較。

在此 URI 剖析上方分層之特定元件的開發人員,可能會選擇在查詢參數符合時使用查詢參數。