gpt4 book ai didi

.net - 为什么对不存在的键进行大量的AppSettings调用会导致应用程序崩溃?

转载 作者:行者123 更新时间:2023-12-03 16:55:22 26 4
gpt4 key购买 nike

我正在使用的Windows服务存在一个非常奇怪的问题,我想了解为什么会发生。

服务每5分钟循环一次,然后在该循​​环中循环浏览包含编号如下的Web服务URL的键:

<add key="URL.1" value="http://dummy1.com/Service.asmx"/>
<add key="URL.2" value="http://dummy2.com/Service.asmx"/>
<add key="URL.3" value="http://dummy3.com/Service.asmx"/>

进行此检查的代码是:
If String.IsNullOrEmpty(AppSettings("OM." & intCount & ".Name").ToString) Then

当它击中不存在的键时,将引发异常,并且服务将停止并等待5分钟,直到下一个循环。

这通常效果很好,但是每隔两周Windows服务将在该行崩溃而没有任何异常。应用程序日志在该行之前有一行,但在此之后没有任何内容,没有任何Try Catches被击中(主要的是捕获基本的“Exception”类)。

在Windows的事件日志中,如下所示:
Faulting application name: MyService.exe, version: 1.1.2.0, time stamp: 0x4fa22a24
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17651, time stamp: 0x4e211319
Exception code: 0xe053534f
Fault offset: 0x0000b9bc
Faulting process id: 0x%9
Faulting application start time: 0x%10
Faulting application path: %11
Faulting module path: %12
Report Id: %13

奇怪的是,这行代码每天至少要执行300次,至少一周,而在那之前,它会导致应用程序完全崩溃,因此大约是2000次。

任何想法为什么会这样?我已经更改了该行代码,使其不依赖于异常,并且它已经正常运行了一周,并且没有崩溃,因此可能与过多的异常有关-可能导致堆栈溢出吗?

最佳答案

Exception code: 0xe053534f



您的程序使用该站点的名称崩溃。异常代码的最后3个十六进制对是“SSO”的ASCII码。这意味着“软堆栈溢出”。它与硬堆栈溢出异常相同,不同之处在于它被尽早检测到。设置 call 时,CLR注意到实际进行 call 将导致硬堆栈溢出。

否则,程序将像在硬StackOverflowException上一样崩溃,它是立即中止,没有catch块或AppDomain.UnhandledException被执行。

从这个问题上无法确切地确定您的程序如何遭受这种命运。否则,这是一个典型的编程错误。

关于.net - 为什么对不存在的键进行大量的AppSettings调用会导致应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10717814/

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