2017-11-07 25 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

@Marco - 네, 저는 알고 있습니다. 그러나 아무도 결과를 "듣고"있지 않더라도 어쨌든 요청이 진행될 것으로 기대합니다. 중단해서는 안됩니다. – BornToCode

+2

하지만 당신은 당신의'HttpClient'를 그 URL을 가져 오기 시작한 직후 처분하고, 보류중인 모든 작업을 취소합니다. – Evk

답변

4

처분 HttpClient은 보류중인 모든 요청을 취소합니다 (있는 경우). 요청을 시작한 직후 클라이언트를 GetAsync으로 처분 (즉, using 블록으로 처리)하므로 실제 HTTP 요청이 시작될 가능성이 거의 없습니다.이 요청은 피들러에 표시됩니다.