2017-11-07 12 views
4

これはコードを記述する適切な方法ではないことは分かっていますが、この動作を理解したいのですが、結果を待たずに非同期のHTTPリクエストを行うたびにリクエストが終了したようです。 (私は仲間には見ません)。ASP.NETが非同期リクエストを終了するのはなぜですか?

コードサンプル:

public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      { 
       using (var client = new HttpClient()) 
       { 
        client.BaseAddress = new Uri("http://localhost.fiddlerhttpclient/"); 
        var response = client.GetAsync("zzzz"); 
       } 
      } 
     } 
    } 

私は、コードを変更する場合:

var response = client.GetAsync("zzzz").Result; 

私はシオマネキでそれを参照しています。私は理由を理解していない - 私は、依頼が何とかバックグラウンドで処理を続けると期待しています。なぜそうではありませんか?

+2

あなたは結果を「待つ」ことはありません。つまり、あなたはコールバックを登録していません。 – Marco

+0

@マルコ - はい私はそれを知っていますが、誰も結果を「聞いていなくても」、とにかくバックグラウンドで処理を進めることを期待しています。 – BornToCode

+2

しかし、あなたはあなたの 'HttpClient'をそのURLのフェッチを開始した直後に処分し、保留中のすべての操作を取り消します。 – Evk

答えて

4

Disposal HttpClientは、すべての保留中の要求があれば取​​り消します。リクエスト開始直後にGetAsyncというクライアント(usingブロックのため)を処分しているため、実際にhttpリクエストを作成する可能性はほとんどなく、これはフィドラーに表示されます。

関連する問題