HttpWebRequest调用页面两次
本文关键字:两次 调用 HttpWebRequest | 更新日期: 2023-09-27 18:00:06
问题:此控制台应用程序调用Azure上托管的长时间运行的网页两次。我希望它只叫它一次。
控制台应用程序失败,并捕获到异常:基础连接已关闭:接收时发生意外错误。所以质疑
如果我从Chrome调用该页面,它会运行一次(如预期)
public class ExtendedWebClient : WebClient
{
public int Timeout { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
if (request != null)
request.Timeout = Timeout;
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
return request;
}
public ExtendedWebClient()
{
Timeout = 1000000; // in ms.. the standard is 100,000
}
}
class Program
{
static void Main(string[] args)
{
var taskUrl = "http://secret.net/SendWeeklyEmails.aspx";
// create a webclient and issue an HTTP get to our url
try
{
using (ExtendedWebClient httpRequest = new ExtendedWebClient())
{
var output = httpRequest.DownloadString(taskUrl);
}
}
catch (Exception ex)
{
Console.WriteLine("Exception was: " + ex.Message);
}
}
}
简单的答案-我不相信这个客户端会调用页面两次!
如果您的呼叫是长时间运行的,并且Azure不允许您进行长时间轮询,那么您将需要重新配置此应用程序,以便您有单独的呼叫来启动并监控此"SendWeeklyEmails"任务的进度。你甚至可以使用命令行客户端代码来完成这项工作,而不是使用网络应用程序。