我已经设置了以下网络请求:
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/的插件。使用该插件,我添加了一条规则,将网络研讨会请求 URL 延迟 60,000 毫秒(1 分钟)。
我希望我的应用程序延迟 5 秒,失败并被我的异常捕获。但是,它会延迟整整 60 秒。
我不确定这是插件问题还是我的应用程序,但我怀疑是后者。在 60 秒的延迟中,我可以导航到其他网页并查看 Fiddler 中的请求,因此我认为插件不存在问题。
我发现了几个类似的问题(How to terminate HttpWebRequest Connection in C#?It doesn't work even set timeout or readwritetimeout),但我不太熟悉线程以及它们是否适用于此。
附加信息
对这一步通过代码进行更多研究,我注意到一些有趣的行为。成功触发,我看到了 Fiddler 中的GetResponse
请求。然后我有 60 秒的等待时间。但是,当我可以继续单步执行时,我注意到它已被捕获为TimeoutException
,尽管事实上它实际上已经等待了整整 60 秒并且已经收到了成功的响应。这确实表明插件中的某些东西可能会欺骗应用程序以某种方式保持不变。