c# - 使用前缀异步时不会触发 Application_Error 处理程序

标签 c# asp.net .net asynchronous async-await

我必须在 Application_Error 处理程序中进行异步调用。所以我用 async 关键字定义了这个处理程序,但它不会在异常时触发。

    protected async void Application_Error(object sender, EventArgs e)
    {
        ...

        await DoAsyncCall();

        ...
    }

当我删除 async 关键字时,处理程序被触发。

顺便说一句,我已经厌倦了向 Application_Start 处理程序添加 async 关键字并且它工作正常。

如何使 Application_Error 异步?或者如何在没有 async 关键字的情况下进行异步调用?

最佳答案

终于找到了解决办法:

protected void Application_Error(object sender, EventArgs e)
{
    ...

    Task task = Task.Run(async () => await DoAsyncCall());

    task.Wait();

    ...
}

关于c# - 使用前缀异步时不会触发 Application_Error 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376682/

相关文章:

asp.net - ASPXGridView ClientSideEvents 如何获取选定行的 KeyField 值

asp.net - 将 ASP.NET 3.5 更新为 4.0 -> Sys.WebForms.PageRequestManager 未定义

c# - 调试调用 .Net(C#) dll 的 VB6 项目

javascript - asp.net core 2.0 为特定 View 加载未压缩的脚本

C#:测试 int x 是否是给定集合的元素的最优雅方法?

c# - 如何使用 asp.net 隐藏和取消隐藏 Excel 工作表的列

c# - C#.net从进程ID获取全名

c# - MQTTNet 监听主题消息

c# - 将文件从 Android 客户端发送到 C# 服务器,在读取整个文件之前中断

c# - 使用 AltChunks 合并的文档的内部文本为空