现在我们可以在ASP.NET MVC 4中使用async / await关键词.
public async Task<ActionResult> TestAsync() { WebClient client = new WebClient(); return Content(await client.DownloadStringTaskAsync("http://www.google.com")); }
但是如何在ASP.NET WebForms中使用它?
解决方法
一个简单的方法是让你的事件处理程序异步.首先,将Async =“true”参数添加到@Page指令中,然后您应该可以编写异步事件处理程序:
protected async void Page_Load(object sender,EventArgs e) { var client = new WebClient(); var content = await client.DownloadStringTaskAsync("http://www.google.com"); Response.Write(content); }
我说“应该能够”,因为我实际上并没有这样做.但它应该工作.
更新:这不适用于Page_Load(请参阅this MSDN forum thread),但应适用于其他事件,例如按钮点击.
更新:这适用于ASP.NET 4.5中的Page_Load.此外,他们添加了检查,如果您不正确地使用异步事件处理程序. See this video for details.