Httpwebreqest与Fiddler一起使用On Timeout

时间:2009-06-23 01:31:15

标签: .net asp.net-mvc httpwebrequest fiddler

我收到了一个奇怪的错误。我已经设置了一个脚本,当Fiddler打开时它可以完美地运行 - 它使用httpwebrequest从网站下载报告,一切正常!

HOWEVER 它只适用于Fiddler打开的时候?当小提琴手不工作时,我只得到一个“请求超时问题”

有谁知道如何修复此问题并使其与我的ASP.NET MVC应用程序一起使用?

由于

编辑:感谢您的回复!关于代理 - 我想在Windows Azure上测试这个脚本 - 对于如何设置默认代理设置几乎感到困惑?

6 个答案:

答案 0 :(得分:12)

对于搜索者来说,这是另一个想法。我有一个以机器人方式操纵我的网站的应用程序。该应用程序在.Net 4.0中使用HttpWebRequest和HttpWebResponse。经过两三次成功的GET后,下一次将会持续锁定。另一篇文章建议,由于对同一主机的并行连接数量的限制,未正确关闭HINTERNET可能会导致应用程序阻止后续GET到同一主机。我不知道这是不是发生在幕后发生的事情,但我想我会回去确定我可以在哪里关闭。

我关闭了代码中的所有HttpWebResponse对象,我的问题就消失了。从这一点来看,我不明白为什么Fiddler会掩盖这个问题,但确实如此。在添加关闭之前,序列中的特定请求将始终超时。关闭响应后,所有这些都清理完了,我可以在没有通过Fiddler代理的情况下运行。

答案 1 :(得分:3)

将所有HttpWebRequest对象关闭为@ProfVonLemongargle建议解决了我遇到的同样问题。

Fiddler可能会关闭与服务器的连接,因此当您的应用将其用作代理时,会屏蔽并发连接限制。有关其他信息,请参阅此主题:HttpWebRequest times out on second call

答案 2 :(得分:2)

请注意,Fiddler充当代理人。在Fiddler运行时让应用程序工作但不是其他可能表示您的默认代理设置有问题。打开Internet选项(可能通过IE)并检查您的代理设置。特别要注意您是否通过脚本进行配置。

我会提到一个非常不可能的可能性,尽管它确实发生在我身上。我的机器上安装了某种防病毒产品。出于某种原因,它认为我的订阅已过期。结果是软件无法运行,因此无法更新允许访问Internet的程序列表。除非Fiddler正在运行,否则我在过期后安装的程序将无效(因为Fiddler在到期之前已安装,它位于“Good”列表中)。到期后安装的任何其他程序都在“错误”列表中(默认情况下)。

答案 3 :(得分:1)

您使用HTTPS运行吗?如果是这样,您的代码可能不信任远程站点的证书,Fiddler可能会将数据传递给您的应用程序。向我们发送错误消息和复制此问题的最少量代码。

答案 4 :(得分:1)

旧链,但我在代码中发现了同样的问题。这是因为javascript中有leftover console.log命令。这导致javascript代码被阻止。

答案 5 :(得分:0)

在公司网络上遇到同样的问题,我打开了Fiddler2来诊断发送/接收的内容,问题就消失了!经过进一步的研究后,我发现Fiddler像代理一样隧道通过它,我的公司网络也使用代理的自动配置脚本(我假设Fiddler正在通过我的应用程序不知道的正确的系统代理进行隧道传输)< / p>

要让我的VB.net程序运行,我所要做的就是将代理设置添加到请求中:

Dim proxy = WebRequest.GetSystemWebProxy()
oRequest.Proxy = proxy