2011-06-23 9 views
1

問題:このコンソールアプリケーションは、Azureでホストされている長時間実行中のWebページを2回呼び出します。私は一度だけそれを呼びたい。HttpWebRequestページを2回呼び出す

コンソールアプリがキャッチされた例外で失敗しました:基本接続が閉じられました:受信時に予期しないエラーが発生しました。 so question

私はChromeからページを呼び出すと、それは(予想通り)を1回実行します

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

重複している可能性があります[基本接続が閉じられました:受信時に予期しないエラーが発生しました](http://stackoverflow.com/questions/6419924/the-underlying-connection-was-closed-an-unexpected-error-受信時に発生しました) – smarx

+0

@smarx - どうやってその重複を見つけましたか?ただ興味があります – Exitos

+0

あなたはフィドラーを実行し、何が起こっているのを見るためにトラフィックを監視できますか? – Exitos

答えて

1

単純な答え - 私は、このクライアントが二回ページを呼び出すとは思いません!

あなたの呼び出しが長時間実行され、Azureが長いポーリングを許可しない場合は、この「SendWeeklyEmails」タスクを監視して開始するための別の呼び出しがあるようにこのアプリケーションを再構築する必要があります。 Webアプリケーションを使用する代わりに、コマンドラインのクライアントコードを使用してこれを行うこともできます。

+0

質問をクローズするつもりです。はい、コンソールアプリケーションのように再構築されたのは道筋です。ありがとう。 –

関連する問題