我有一个非常简单的 HTTP 获取应用程序,这里有一个更简单的编辑版本
using System;
using System.Net;
using System.Threading;
namespace UploadRichardsStatusConsoleApplication
{
class Program
{
static void Main()
{
const string requestString = "http://www.google.com/";
while (true)
{
var request = WebRequest.Create(requestString);
Console.WriteLine("request sent = " + requestString);
try
{
var response = request.GetResponse();
Console.WriteLine("response.ContentLength = " + response.ContentLength);
}
catch (WebException)
{
Console.WriteLine("Request timed out");
}
Thread.Sleep(5000);
}
}
}
}
真正的控制台应用程序有我自己的 Azure URL,但无论请求字符串如何,问题都会出现,即使是 Google,所以我认为这不是服务器端问题。当我运行代码时,前两个循环成功,即response.ContentLength
报告。此后他们超时。为什么我只接到两个电话?我正在开发的实际应用程序使用 HTTP GET 定期报告状态,因此我需要重复执行此操作(超过两次!)
我应该注意到我已经尝试过:
- 在 URL 上添加未使用的查询属性,以便每个 URL 都是不同的
- 将超时设置为巨大的值
- 绕过缓存
但这些都不起作用。