为什么 ASP.NET 终止异步请求?
Why does ASP.NET terminates async requests?
我知道这不是编写代码的正确方法,但我仍然想了解这种行为 - 每当我在不等待结果的情况下执行异步 HTTP 请求时,请求似乎已终止? (我没有在 fiddler 上看到它)。
代码示例:
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;
我确实在 fiddler 上看到了它。我不明白为什么 - 我希望请求仍会以某种方式在后台继续处理,那为什么不呢?
处理 HttpClient
取消所有未决请求(如果有)。您在使用 GetAsync
开始请求后立即处理您的客户端(因为 using
块),因此它几乎没有机会开始发出将出现在 fiddler 中的实际 http 请求。
我知道这不是编写代码的正确方法,但我仍然想了解这种行为 - 每当我在不等待结果的情况下执行异步 HTTP 请求时,请求似乎已终止? (我没有在 fiddler 上看到它)。
代码示例:
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;
我确实在 fiddler 上看到了它。我不明白为什么 - 我希望请求仍会以某种方式在后台继续处理,那为什么不呢?
处理 HttpClient
取消所有未决请求(如果有)。您在使用 GetAsync
开始请求后立即处理您的客户端(因为 using
块),因此它几乎没有机会开始发出将出现在 fiddler 中的实际 http 请求。