【问题标题】:Update panel no longer waits for task to finish更新面板不再等待任务完成
【发布时间】: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


    【解决方案1】:

    我找到了答案——不是我所期待的。

    被调用(同步)的方法随后异步启动了一封电子邮件。这在 Asp.Net 4.0 中有效,但我猜不是在 4.5+ 中引入任务之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2016-01-30
      相关资源
      最近更新 更多