我目前正在编写一个简单的应用程序,它对 Web 服务器执行一系列请求,但我遇到了一个奇怪的......功能?
我不需要请求的响应流,只需要状态码。因此,对于我的每条数据,我调用自己的“发送”方法:
public static int Send(string uri)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = (HttpWebRequest)WebRequest.Create(uri);
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK) return 0;
}
catch (Exception e)
{
if (request != null) request.Abort();
}
return -1;
}
工作正常?是的,除非我至少调用这个函数两次。连续第二次调用此类函数(具有相同的 uri)将始终导致超时。
现在,这很奇怪:如果我request.Abort();
在返回零时添加(这里,当状态码为 200 时) - 一切总是正常的。
所以我的问题是——为什么?是某种框架限制,还是特定服务器上的某种反 DOS 保护(不幸的是,服务器对我来说是一个黑匣子)?或者,也许我只是不明白这一切是如何运作的?