在回答另一个问题时,我正在使用Uri类进行探索,发现了一些让我感到奇怪的东西:
考虑这两个Uri:
var u1 = new Uri("http://a.b:33/abc%2fdef/c?d=f");
var u2 = new Uri("foobar://a.b:33/abc%2fdef/c?d=f");
他们之间的不同只在于他们的方案。提供的标识符的所有其他元素都是相同的。
那么,为什么当我转储这些Uri实例的“Segments”属性时,我会看到对于“u1”的以下输出:
/ abc/ def/ c
但对于“u2”却有不同的输出?
/ abc%2fdef/ c
为什么不同的方案具有不同的解析行为?
%2F
不应解码为/
。但是,HttpStyleUriParser可能会出于与Apache中AllowEncodedSlashes指令相同的原因执行此操作。 - dtb