我已设置以下网络请求:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(gotoWebinerUrl);
request.Accept = "text/json";
request.Timeout = 5000;
// Allows us to track with Fiddler, for dev use only
request.Proxy = new WebProxy("127.0.0.1", 8888);
try
{
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
...
}
catch (Exception exception)
{
...
}
在Fiddler中,我安装了这个延迟请求http://fiddlerdelayext.codeplex.com/的插件。使用该插件,我添加了一条规则,将网络研讨会请求网址延迟60,000毫秒(1分钟)。
我希望我的应用程序延迟5秒,失败并被我的异常捕获。但是,它延迟了整整60秒。
我不确定这是插件问题还是我的应用程序,但我怀疑后者。在60秒的延迟中,我可以导航到其他网页并查看Fiddler中的请求,因此我不相信该插件存在问题。
我发现了几个类似的问题(How to terminate HttpWebRequest Connection in C#?It doesn't work even set timeout or readwritetimeout),但我对线程并不是很熟悉,如果它们适用于此处。
其他信息
对这段代码的更多研究,我注意到了一些有趣的行为。 GetResponse
成功解雇,我看到了Fiddler提出的请求。然后我有60秒的等待时间。然而,当我可以继续踩踏时,我注意到它已被捕获为TimeoutException
,尽管事实上它已经等待了整整60年并且已经收到成功的响应。这确实表明插件中的某些内容可能会使应用程序无法以某种方式进行操作。