sap*_*ket 5 .net c# stack-overflow
我正在运行一个.Net控制台应用程序,每天执行24小时。它的错误大约每6天发生一次。
希望您能帮助您修复此错误。首先,我将提供一些背景知识,然后再提供异常消息。
不幸的是,我没有复制步骤。继续阅读时,您会明白为什么。
首先,一些背景:
我的代码中有健壮的异常处理(或我认为)。例如,我的Main()方法中有一个try ... catch块,该块捕获任何未处理的异常,如果它们是致命异常,它将重新启动基础任务。它适用于我自己的代码生成的任何异常。
我无法解释为什么我的代码未处理以下异常。我最好的猜测是clr.dll异常不会被捕获在托管堆栈中。如果真是这样,我不知道如何生成堆栈跟踪。我什至不知道从哪里开始解决这个问题。
我正在运行的进程正在使用以下版本和模块:
崩溃时,我检查了RAM和HDD:它们都有足够的可用空间。
关于我正在执行的代码。该过程是一个连续的循环,从网站下载数据并将其保存到文本文件。如果有错误,则使用log4net记录。
基本的循环是这样的:
for (int i = 0; i < 5; i++)
{
try
{
return new WebClient().DownloadString(url);
}
catch
{
Thread.Sleep(500); // slow it down.
}
}
Run Code Online (Sandbox Code Playgroud)
以下是发生异常时在控制台窗口中显示的唯一消息:(不显示堆栈跟踪)
Process is terminated due to StackOverflowException
Run Code Online (Sandbox Code Playgroud)
我的控制台应用程序完全冻结,并弹出一个对话框窗口,显示以下信息(关闭此对话框也会终止我的应用程序)
Problem signature:
Problem Event Name: APPCRASH
Application Name: foo.goo.BatchExecutor.exe
Application Version: 1.0.0.0
Application Timestamp: 5a50f3eb
Fault Module Name: clr.dll
Fault Module Version: 4.7.2117.0
Fault Module Timestamp: 59cf5105
Exception Code: c00000fd
Exception Offset: 0002429f
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033
Additional Information 1: 28e8
Additional Information 2: 28e8aacd8abfe32876bc8363e8e5c526
Additional Information 3: 6916
Additional Information 4: 6916665ca52ff482d854f190abcf46b2
Run Code Online (Sandbox Code Playgroud)
我可以找到有关崩溃的信息的唯一其他地方是Windows事件日志中:
Log Name: Application
Source: Application Error
Date: 1/23/2018 5:51:46 PM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: FOOGOO
Description:
Faulting application name: foo.goo.BatchExecutor.exe, version: 1.0.0.0, time stamp: 0x5a50f3eb
Faulting module name: clr.dll, version: 4.7.2117.0, time stamp: 0x59cf5105
Exception code: 0xc00000fd
Fault offset: 0x0002429f
Faulting process id: 0x1e00
Faulting application start time: 0x01d39169354e41a7
Faulting application path: C:\Users\Owner\Desktop\SHARED\foo.goo.BatchExecutor\foo.goo.BatchExecutor.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 21b9b2a4-00a9-11e8-9f6c-94c69110a719
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2018-01-24T01:51:46.000000000Z" />
<EventRecordID>1852</EventRecordID>
<Channel>Application</Channel>
<Computer>FOOGOO</Computer>
<Security />
</System>
<EventData>
<Data>foo.goo.BatchExecutor.exe</Data>
<Data>1.0.0.0</Data>
<Data>5a50f3eb</Data>
<Data>clr.dll</Data>
<Data>4.7.2117.0</Data>
<Data>59cf5105</Data>
<Data>c00000fd</Data>
<Data>0002429f</Data>
<Data>1e00</Data>
<Data>01d39169354e41a7</Data>
<Data>C:\Users\Owner\Desktop\SHARED\foo.goo.BatchExecutor\foo.goo.BatchExecutor.exe</Data>
<Data>C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll</Data>
<Data>21b9b2a4-00a9-11e8-9f6c-94c69110a719</Data>
</EventData>
</Event>
Run Code Online (Sandbox Code Playgroud)
*****更新解决方案*****
我已经放弃尝试在.Net中处理此异常。我找到了有效的解决方法。此解决方法适用于Windows,特别是具有事件查看器的任何版本。
解决方法说明。
1)打开控制面板->管理工具->事件查看器-> Windows日志->应用程序。
2)选择有问题的事件。在我的情况下,它的状态为ERROR,并且与您在上面看到的示例匹配。
3)在右侧,单击“将任务附加到此事件”。
4)完成向导。就我而言,我重新启动应用程序。
5)保存任务。
6)现在切换到任务计划程序并找到任务。单击属性。单击选项卡,然后根据需要配置任务。
*****使用解决方案更新 *****
我已经放弃尝试在 .Net 中处理此异常。我找到了一个有效的解决方法。此解决方法适用于 Windows,特别是带有事件查看器的任何版本。
解决方法说明。
1) 打开控制面板->管理工具->事件查看器->Windows 日志->应用程序。
2) 选择违规事件。就我而言,它是状态 ERROR,并且与您在上面看到的示例匹配。
3) 在右侧单击“将任务附加到此事件”。
4) 完成向导。就我而言,我重新启动我的应用程序。
5) 保存任务。
6) 现在切换到任务计划程序并找到该任务。单击属性。单击选项卡并根据需要配置任务。
| 归档时间: |
|
| 查看次数: |
4873 次 |
| 最近记录: |