为什么ASP.NET会终止异步请求?

时间:2017-11-07 08:32:41

标签: c# asp.net async-await fiddler dotnet-httpclient

我知道这不是编写代码的正确方法,但我仍然想了解这种行为 - 每当我在不等待结果的情况下执行异步HTTP请求时,似乎请求被终止了? (我在小提琴手上看不到它。)

代码示例:

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;

我确实在小提琴手上看到了它。我不明白为什么 - 我希望这个请求仍然会以某种方式继续处理,所以为什么不呢?

1 个答案:

答案 0 :(得分:4)

处置HttpClient会取消所有待处理的请求(如果有)。您在使用using开始请求后立即处理您的客户端(因为GetAsync阻止),因此它几乎没有机会开始制作将出现在fiddler中的实际http请求。