【发布时间】:2013-04-27 19:28:27
【问题描述】:
WPF Pack URIs 使用三个连续的逗号,例如:
pack://application:,,,/myFolder/myPic.bmp
,,, 部分应该意味着什么吗?它只是一个分隔符吗?逗号之间可以有任何内容吗?
【问题讨论】:
WPF Pack URIs 使用三个连续的逗号,例如:
pack://application:,,,/myFolder/myPic.bmp
,,, 部分应该意味着什么吗?它只是一个分隔符吗?逗号之间可以有任何内容吗?
【问题讨论】:
一个 URI is composed of 一个 scheme、authority 和 path1。
例如,取这个网页的http URL:
https://stackoverflow.com/questions/16256056/commas-in-wpf-pack-uris
scheme = https://
authority = stackoverflow.com
path = /questions/16256056/commas-in-wpf-pack-uris
pack URIs这同样适用于您的 pack URI:
pack://application:,,,/myFolder/myPic.bmp
scheme = pack://
authority = application:,,,
path = /myFolder/myPic.bmp
这里不同寻常的是,authority 部分由另一个 URI 的编码表示组成。其他 URI 如下所示:
application:///
scheme = application://
authority =
path = /
它指的是一个“包”——具体来说,是指当前应用程序的资源文件包。来自您已链接的documentation page:
WPF 支持两种权限:application:/// 和 siteoforigin:///。 application:/// 权限标识在编译时已知的应用程序数据文件,包括资源和内容文件。 siteoforigin:/// 权限标识源文件的站点。
为了用作pack URI 的authority 组件,需要对其进行编码,使其斜杠不会被误解为属于路径 pack URI 的组成部分。
他们选择对其进行编码的方式是用逗号替换斜杠。
从同一文档页面:
注意
包 URI 的授权组件是一个嵌入式 URI,它指向一个包,并且必须符合 RFC 2396。此外,“/”字符必须替换为“,”字符和保留字符,例如“%”和“ ?”必须逃脱。详情请参阅 OPC。
1) 加上潜在的查询和片段,但这些与此处无关。
【讨论】:
答案在你链接的页面上,
- 授权:
application:///
和
... 此外,“/”字符必须替换为“,”字符和保留字符,例如“%”和“?”必须逃脱。详情请参阅 OPC
所以
,,,部分应该意味着什么吗?
它是///的替代品
逗号之间可以有任何内容吗?
不。
更正:OPC(开放式打包)链接指向ECMA-376,其中包含诸如pack://http%3c,,www.openxmlformats.org,my.container/a/b/foo.xml 之类的示例
但是 afaik 不适用于 WPF。
【讨论】: