我有一个在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"
}
任何建议表示赞赏。
答案 0 :(得分:0)
我找到了答案 - 而不是我期待的答案。
被调用的方法(同步)随后异步启动电子邮件。这在Asp.Net 4.0中有效,但我不是在4.5 +中引入任务后猜测。