gpt4 book ai didi

asp.net - web api TaskScheduler.UnobservedTaskException

转载 作者:行者123 更新时间:2023-12-04 18:13:24 31 4
gpt4 key购买 nike

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

An unhandled exception occurred and the process was terminated. Application ID: /LM/W3SVC/2/ROOT/oasis Process ID: 9236 Exception: System.AggregateException Message: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. StackTrace: at System.Threading.Tasks.TaskExceptionHolder.Finalize() InnerException: System.Web.HttpException Message: The remote host closed the connection. The error code is 0x800704CD. StackTrace: at System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult result) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)



此异常似乎不是源自程序代码,而是源自 web api 内部。我需要防止这样的异常回收进程,因为这会破坏大量用户的 session 。

我了解处理此异常的一种方法是使用:
TaskScheduler.UnobservedTaskException += (sender, e) =>
{
McpsEventLog.PostException(e.Exception, "webapicontroller");
e.SetObserved();
};

但是为了这个工作,我可以把这段代码放在哪里。 Web api Controller 中的某个地方?或在 global.asax 中。有人知道如何在 asp.net Web Api 休息服务中实现 UnobserveredTaskException 吗?

最佳答案

你是对的:未处理的异常在 Web 应用程序的上下文中是 Not Acceptable 。设置该处理程序的正确位置是 Application_Start事件。

您还应该设置UnhandledException-event .但是,它不允许您吞下异常。只记录它。

最后,看看我关于这个话题的问题:How to treat unhandled thread-exceptions in ASP.NET?我没有得到可用的答案,但它仍然可能对您有所帮助。

关于asp.net - web api TaskScheduler.UnobservedTaskException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169230/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com