【问题标题】:Accessing XML feed only works if fiddler is running只有在 fiddler 正在运行时才能访问 XML 提要
【发布时间】:2014-12-23 00:23:00
【问题描述】:

我试图理解为什么只有在我打开提琴手时才能对提要进行简单调用。

我查看了以下链接,但似乎没有一个答案适用:

HttpWebRequest doesn't work except when fiddler is running

HttpWebRequest only works while fiddler is running

http://blogs.telerik.com/fiddler/posts/13-02-28/help!-running-fiddler-fixes-my-app-

我的代码很简单,据我所知,它应该只是用 xml 文件的内容填充变量:

using (var client = new WebClient())
{                    
    text = client.DownloadString(path);
}

请注意,如果我正在运行 fiddler,这将完美运行,但如果我在 fiddler 未运行时运行它,则会失败并出现超时错误 (?)。

我可以直接从我的浏览器访问 xml 文件的路径 - 所以权限/访问似乎也不是问题。

http://www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml

Fiddler 的 RAW 输出为:

HTTP/1.1 200 OK
Via: 1.1 varnish, 1.1 ZTMG01
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
Age: 19
Date: Mon, 22 Dec 2014 15:23:47 GMT
Content-Type: text/xml
ETag: "dce1c05f259961aeac88cebcdfdbeebe"
Server: AmazonS3
x-amz-id-2: C6oNmRATZO4E7eNiyPhyCOhqT45Mb9Wp0XXaU8KsBQf84gYeNzM9OPAOa9YBNFsL4DGsPSEs5Cw=
x-amz-request-id: 0CE21B93AC8DDC15
Last-Modified: Mon, 22 Dec 2014 15:22:31 GMT
X-TTL-RULE: 8
X-Cacheable: Yes. Cacheable
X-TTL: 60.000
X-Backend: proxy
X-Varnish: 10.76.2.236
X-Backend-Url: http://s3-eu-west-1.amazonaws.com/tfl.pub/Serco/livecyclehireupdates.xml
X-Hash-Url: /tfl.pub/Serco/livecyclehireupdates.xml
Access-Control-Allow-Origin: *
X-Varnish: 181999945 181994842
X-Banning: 
X-Cache: HIT
X-Cache-Hits: 4

有人知道为什么会这样吗?

【问题讨论】:

  • 这可能是代理问题吗? WebClient 可能会“意外”使用 Fiddler 的代理设置,从而阻止它运行。您可以发布成功调用的 Fiddler RAW 输出吗?
  • 用 RAW 输出更新了我的问题。据我所见,没有什么不妥

标签: c# xml webclient fiddler


【解决方案1】:

除了开发机器上的代理配置问题之外,我看不出这怎么可能。我已经使用 LINQPad 测试了提供的代码和 URL,并成功检索了 XML,无论是 Fiddler 运行还是未运行。

您可以通过将 Proxy 属性设置为 null 来覆盖 WebClient 实例的默认代理配置:

string path = "http://www.tfl.gov.uk/tfl/syndication/feeds/cycle-hire/livecyclehireupdates.xml";

using (System.Net.WebClient client = new System.Net.WebClient())
{
    client.Proxy = null;
    client.DownloadString(path);
}

请注意,将 Proxy 设置为 null 将始终绕过 Fiddler。

【讨论】:

  • 这对我来说很有意义,但它仍然不起作用(尽管添加的行将代理设置为空),提琴手也不起作用)。今晚我会在家里尝试看看这是否会有所作为。
  • 您是否通过办公室的代理连接到 Internet?
  • 刚刚检查过 - 是的,我们这样做了
  • 尝试用client.Proxy = WebRequest.DefaultProxy;替换client.Proxy = null;
  • client.Proxy = WebRequest.DefaultWebProxy; 为我工作,也许是更高版本的 System.Net?无论如何,非常感谢您的坚持。
【解决方案2】:

正如 magos 所说,这可能是代理问题

取自http://msdn.microsoft.com/en-us/library/system.net.webclient.proxy(v=vs.110).aspx

Proxy 属性标识代表此 WebClient 对象与远程服务器通信的 IWebProxy 实例。代理由系统使用配置文件和 Internet Explorer 局域网设置进行设置。要指定不应使用代理,请将 Proxy 属性设置为 GetEmptyWebProxy 方法返回的代理实例。

尝试在 IE 的 Internet 选项中重置代理配置

【讨论】:

  • 我已经更新了问题 - 显然那里没有端口号
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多