asp.net - 如何在asp.net webform中使用async/await实现异步页面?

标签 asp.net asynchronous webforms async-await

我们现在可以在 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 .首先,添加 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 ),但应该适用于其他事件,例如按钮点击。

更新:这确实适用于 Page_Load在 ASP.NET 4.5 中。此外,如果您不正确地使用 async,他们会添加检查。事件处理程序。 See this video for details.

关于asp.net - 如何在asp.net webform中使用async/await实现异步页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9561632/

相关文章:

html - WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。请添加一个名为 jquery 的 ScriptResourceMapping(区分大小写)

asp.net - Windows Azure - CDN 作为网站?

c# - 从代码隐藏更改母版页中的控件属性后出现问题

javascript - 将异步工作流程更改为 Promise (Bluebird)

c# - 如何从 URL 中删除根文件夹名称?

asp.net - 如何为网络浏览器的用户获取 AD 属性

部分回发后 jQuery 重置按键计数

javascript - 为什么需要使用 jasmine 的 runs 和 waitFor 函数?

java - 使用带有 CompletableFuture 的默认公共(public) fork/join 池进行长阻塞调用是不好的做法吗?

c# - 如何通过Javascript检查CheckBoxList的值