我试图理解为什么只有当我打开小提琴手时,对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
有谁知道为什么会这样?
答案 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选项”中重置代理配置