默认情况下,
Uri该类将不允许在URI中使用转义
/字符(
%2f)(即使在我阅读RFC
3986时这似乎是合法的)。
Uri uri = new Uri("http://example.com/%2F");Console.WriteLine(uri.AbsoluteUri); // prints: http://example.com//
(注意:请勿使用Uri.ToString来打印URI。)
根据Microsoft
Connect上此问题的错误报告,此行为是设计使然,但是您可以通过将以下内容添加到app.config或web.config文件中来解决此问题:
<uri> <schemeSettings> <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" /> </schemeSettings></uri>
(从https://stackoverflow.com/a/10415482转发,因为这是避免使用此错误的“官方”方式,而无需使用反射来修改私有字段。)
编辑: “连接错误”报告不再可见,但是的文档
<schemeSettings>建议使用此方法以允许
/URI中的转义字符。请注意(根据该文章),如果组件不能正确处理转义的斜杠,可能会对安全性产生影响。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)