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);
        }
    }
}

HttpWebRequest调用页面两次

简单的答案-我不相信这个客户端会调用页面两次!

如果您的呼叫是长时间运行的,并且Azure不允许您进行长时间轮询,那么您将需要重新配置此应用程序,以便您有单独的呼叫来启动并监控此"SendWeeklyEmails"任务的进度。你甚至可以使用命令行客户端代码来完成这项工作,而不是使用网络应用程序。