我可以阻止 Uri 在 WebRequest.Create 中取消编码 url 吗?



代码本身并不复杂,只是无法正常工作:

Uri uri = new Uri("https://www.google.com/webmasters/tools/feeds/sites/http%3A%2F%2Fwww.mydomain.co.uk%2F");
WebRequest.Create(uri);

我从服务器收到一个"错误请求",经过大量挖掘,发现 Uri 正在变成

https://www.google.com/webmasters/tools/feeds/sites/http%3A//www.mydomain.co.uk/

这不是我要求的,所以它有抱怨

有没有办法阻止这种情况?

答案在这里找到:https://stackoverflow.com/a/10415482/159341

根据 Microsoft Connect 上此问题的错误报告,此行为是设计使然,但您可以通过将以下内容添加到 app.config 或 web.config 文件来解决它:

<uri>
  <schemeSettings>
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
  </schemeSettings>
</uri>

(由于 WebRequest.Create(string) 仅委托给 WebRequest.Create(Uri),因此无论调用哪种方法,都需要使用此解决方法。

最新更新