【发布时间】:2018-11-03 11:47:25
【问题描述】:
我有一个在 Asp.Net 4.0/webforms 中运行的网站。
我以为我可以将它“按原样”移植到 4.7,但我错了。
正如您从 Asp.Net 版本中看到的那样,这里没有“等待任务”——只有一个更新面板和页面本身的 Async="true" 标签。
为什么我们首先需要页面上的 Async 标记,我不知道。
该页面是一个申请表,所以当用户输入完数据后,他们按“提交”。
然后启动一个长时间运行的作业(90 秒),然后重定向到另一个页面。
很明显,直到长时间运行的作业的结果进来,重定向才能发生,所以就用户而言,它实际上是一个同步操作。
除了它不再起作用,我现在收到以下消息:
异步模块或处理程序已完成,而异步操作仍处于挂起状态
我猜该页面不再等待工作完成,但由于这种东西对我来说是全新的,我不知道修复它的正确方法是什么。
举个例子,这是我尝试从页面加载调用的两种方法
async Task WaitForMe()
{
// This waits 5 secs - no issues.
await Task.Delay(5000);
}
async Task ThisIsTheRealOne()
{
// This contains a number of methods plus a
// WebClient Http Request - it errors with:
// "An asynchronous module or handler completed while an asynchronous +
// operation was still pending"
}
任何建议表示赞赏。
【问题讨论】:
标签: c# asp.net webforms updatepanel