首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web TaskScheduler.UnobservedTaskException

web TaskScheduler.UnobservedTaskException
EN

Stack Overflow用户
提问于 2012-08-29 00:08:08
回答 1查看 1K关注 0票数 2

最近,我向一个生产网站发布了一个asp.net web。在大约每天一次的生产中,未处理的异常会导致网站进程回收:

出现未处理的异常,进程被终止。应用程序ID: /LM/W3SVC/2/根/绿洲进程ID: 9236异常: System.AggregateException消息:通过等待任务或访问其异常属性没有观察到任务的异常。因此,未观察到的异常由终结器线程重新引发。System.Threading.Tasks.TaskExceptionHolder.Finalize() StackTrace: InnerException: System.Web.HttpException消息:远程主机关闭了连接。错误代码为0x800704CD。(在System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult结果)在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤中,布尔& completedSynchronously)

此异常似乎不是起源于程序代码,而是源于web内部。我需要防止这样的过度循环过程,因为这会破坏大量用户的会话。

据我了解,处理此异常的一种方法是使用:

代码语言:javascript
复制
TaskScheduler.UnobservedTaskException += (sender, e) =>
{
    McpsEventLog.PostException(e.Exception, "webapicontroller");
    e.SetObserved();
};

但是要想让它起作用,我可以把这些代码放在哪里。在web控制器的某个地方?或者在global.asax。有人知道如何在UnobserveredTaskException Web服务中实现asp.net吗?

EN

回答 1

Stack Overflow用户

发布于 2012-08-29 11:50:44

您说得对:在web应用程序的上下文中,未处理的异常是不可接受的。设置该处理程序的正确位置是Application_Start事件。

您还应该设置UnhandledException事件。不过,它不允许你吞下这个例外。只是记录一下。

最后,请看我关于这个主题的问题:如何在ASP.NET中处理未处理的线程异常?我没有得到一个可用的答案,但它仍然可能对您有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12169230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档