仅当fiddler正在运行时,才能访问XML提要

时间:2014-12-22 14:59:49

标签: c# xml webclient fiddler

我试图理解为什么只有当我打开小提琴手时,对Feed的简单调用才有效。

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

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未运行时运行它,则会因超时错误(?)而失败。

我可以直接从我的broswer访问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

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:5)

我无法看到除了开发机器上的代理配置问题之外的其他问题。我已经使用LINQPad测试了提供的代码和URL,并且在Fiddler运行且未运行的情况下成功检索了XML。

您可以通过将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。

答案 1 :(得分:1)

正如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选项”中重置代理配置