gpt4 book ai didi

asp.net - 计时器回调中的ASP.NET未处理的异常导致W3WP崩溃且未记录错误

转载 作者:行者123 更新时间:2023-12-02 08:02:13 25 4
gpt4 key购买 nike

我遇到一些随机发生的未处理的异常,导致w3wp崩溃。我想跟踪该异常的原因。我的MvcApplication类中已经有一个全局Application_Error处理程序重写,因此,崩溃必须由某些HTTP上下文异常引起。为了重现该问题,我在计时器回调中自己创建了一个,并尝试对其进行跟踪。像这样的简化代码

public static class MonitorTimers
{
public static Timer _taskMonitorTimer = new Timer(state: null, dueTime: 1000, period: 1000, callback: (state) =>
{
throw new Exception("Ouch! Me dead.");
});
}

在我的本地开发环境(由VS2017启动的iisexpress)和测试环境(IIS 8.5)中,当应用程序启动然后崩溃时,可以在事件查看器中看到以下内容:

enter image description here

来自 ASP.NET.NET Runtime的最有用的事件1325和1026显示了堆栈跟踪-正是我需要的东西。

我的问题是,在生产机器(也是IIS 8.5)中,我找不到有用的事件1325。只有崩溃报告,没有我知道的更多信息。所以我不知道是什么引起了错误。我可以用try ... catch块包围我的计时器回调,但是错误很可能是由其他原因(非托管库,静态类初始化中的错误)引起的,所以我仍然无法跟踪。

因此,对于为什么缺少事件1325或一些可以显示日志并分析堆栈跟踪的工具的建议,我们深表感谢。谢谢。

enter image description here

最佳答案

因此,在您的情况下,您将生成异常Diring加载应用程序域。
当CLR加载应用程序域时,它首先初始化静态字段。因此,如果您的代码在静态字段方面存在问题,则将抛出异常,直到它指定Application_Error处理程序为止。

多一点,您的应用程序占用大量内存吗?在两种情况下,应用程序无法写日志并无法执行catch块中的代码:StackOverflowException和OutOfMemoryException。您可以检查是否存在一些内存泄漏或无限递归吗?

还有一点:在视觉工作室设置中设置为在引发任何异常时中断。

还有一点:最好将初始化逻辑从静态构造函数移动到ApplicationStart或类似的东西。您可以临时执行此操作,以抓住袋子,然后将其移至先前的状态。

关于asp.net - 计时器回调中的ASP.NET未处理的异常导致W3WP崩溃且未记录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60273003/

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