service - 服务失败,没有抛出异常
问题描述
我对在 VS C# 环境中进行开发有些陌生,并且遇到了以下问题。我开发了一个与 MS Access 数据库接口的 C# 服务 (BrassSS),它自 2018 年 2 月以来一直在运行。该服务旨在在凌晨 4:00 执行每晚备份,在早上 7 点发送提醒电子邮件,并在 10 点发送状态电子邮件,2 和 6 每天。多年来,这一切都运行良好,直到大约一周前,当一位客户打电话给我说提醒电子邮件不起作用时。BrassSS 保留了一个日志,我检查并注意到,当我在早上 7:00 尝试打开数据库发送提醒电子邮件时,该服务在几毫秒后就死了。这从未发生过,所以我一直试图用我有限的知识搜索互联网并为此苦苦挣扎。请注意,我有一个“镜子” 我作为控制台应用程序 (BrassConsoleApp) 运行的服务的图像,它也在同一位置失败。我终于进入了事件查看器(如下所示的两个日志条目),似乎正在发生未处理的异常。
我不知道这是否有帮助,并且可能只会增加混乱,但在上个月,我已将 MS Access 从 2007 年切换到 2016 年。话虽如此,请注意,在凌晨 4:00,当备份开始时,您在下面看到的打开数据库的代码完全相同,运行没有问题。
所以在早上 7:00,计时器过去了,我需要打开数据库,这是我的代码:
class DBif
{
const string cstClassName = "DBif";
private OleDbConnection conDB;
private string strPathToBEFile;
public bool openDB(string strFullPathToDB) {
// Connects to the DB
this.strPathToBEFile = strFullPathToDB;
try {
if (this.conDB != null) {
this.conDB.Close();
}
Logs.addEvent("Info", cstClassName, "openDB", "Attempt to Open DB: " + strPathToBEFile); //debug
string connectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" + strPathToBEFile + ";Jet OLEDB:Database Password=" + "----------" + ";";
Logs.addEvent("Info", cstClassName, "openDB", "Connection string: " + strPathToBEFile); //debug
this.conDB = new OleDbConnection(connectionString);
Logs.addEvent("Info", cstClassName, "openDB", "conDB successfull " + strPathToBEFile); //debug
this.conDB.Open(); ***<---- I place a breakpoint here, step over it, and the app FAILS WITH NO EXCEPTION***
Logs.addEvent("Info", cstClassName, "openDB", "DB Opened successfully: " + strPathToBEFile); //debug
return true;
} catch (Exception ex) {
Logs.addEvent("CRITICAL", cstClassName, "openConnection", "Error trying to Open database: " + ex.Message);
return false;
}
}
..... }
我希望一些专家可以对此有所了解并帮助我找到根本原因。
这是应用程序失败时显示错误的事件查看器日志条目;
Log Name: Application
Source: Application Error
Date: 2021-Jun-10 4:30:01 PM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: Dell5759
Description:
Faulting application name: BrassConsoleApp.exe, version: 1.0.0.0, time stamp: 0x60c2722d
Faulting module name: mso20win32client.dll, version: 0.0.0.0, time stamp: 0x60a155a8
Exception code: 0xc000041d
Fault offset: 0x001d3a12
Faulting process id: 0x49a8
Faulting application start time: 0x01d75e34f0fb2b15
Faulting application path: D:\BitCrafters\Dev\Brass\Next\BrassConsoleApp\bin\Debug\BrassConsoleApp.exe
Faulting module path: C:\Program Files (x86)\Common Files\Microsoft Shared\Office16\mso20win32client.dll
Report Id: b2318536-61c1-4958-85c0-a6803c4bbd3b
Faulting package full name:
Faulting package-relative application ID:
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>100</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-06-10T20:30:01.9117979Z" />
<EventRecordID>200410</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>Application</Channel>
<Computer>Dell5759</Computer>
<Security />
</System>
<EventData>
<Data>BrassConsoleApp.exe</Data>
<Data>1.0.0.0</Data>
<Data>60c2722d</Data>
<Data>mso20win32client.dll</Data>
<Data>0.0.0.0</Data>
<Data>60a155a8</Data>
<Data>c000041d</Data>
<Data>001d3a12</Data>
<Data>49a8</Data>
<Data>01d75e34f0fb2b15</Data>
<Data>D:\BitCrafters\Dev\Brass\Next\BrassConsoleApp\bin\Debug\BrassConsoleApp.exe</Data>
<Data>C:\Program Files (x86)\Common Files\Microsoft Shared\Office16\mso20win32client.dll</Data>
<Data>b2318536-61c1-4958-85c0-a6803c4bbd3b</Data>
<Data>
</Data>
<Data>
</Data>
</EventData>
</Event>
第二个事件查看器信息日志条目就在上面的一个之后 ---------------------------------------- ------------
Log Name: Application
Source: Windows Error Reporting
Date: 2021-Jun-10 4:30:04 PM
Event ID: 1001
Task Category: None
Level: Information
Keywords: Classic
User: N/A
Computer: Dell5759
Description:
Fault bucket 1496835596276001519, type 1
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: BrassConsoleApp.exe
P2: 1.0.0.0
P3: 60c2722d
P4: mso20win32client.dll
P5: 0.0.0.0
P6: 60a155a8
P7: c000041d
P8: 001d3a12
P9:
P10:
Attached files:
\\?\C:\TMP\{348A1C8B-8F9A-4947-A735-1A6662FAB73B} - OProcSessId.dat
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBA96.tmp.dmp
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBD95.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBDC5.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBDD3.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBE22.tmp.txt
These files may be available here:
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_BrassConsoleApp._a65121a9886cf85d89cc2caea488de84ebbc6379_15a45da1_128d96b7-c591-43c7-8393-71b1b078c790
Analysis symbol:
Rechecking for solution: 0
Report Id: b2318536-61c1-4958-85c0-a6803c4bbd3b
Report Status: 268435456
Hashed bucket: e03e080836cae1e184c5d40b5330eaef
Cab Guid: 0
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Windows Error Reporting" />
<EventID Qualifiers="0">1001</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-06-10T20:30:04.9119743Z" />
<EventRecordID>200411</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>Application</Channel>
<Computer>Dell5759</Computer>
<Security />
</System>
<EventData>
<Data>1496835596276001519</Data>
<Data>1</Data>
<Data>APPCRASH</Data>
<Data>Not available</Data>
<Data>0</Data>
<Data>BrassConsoleApp.exe</Data>
<Data>1.0.0.0</Data>
<Data>60c2722d</Data>
<Data>mso20win32client.dll</Data>
<Data>0.0.0.0</Data>
<Data>60a155a8</Data>
<Data>c000041d</Data>
<Data>001d3a12</Data>
<Data>
</Data>
<Data>
</Data>
<Data>
\\?\C:\TMP\{348A1C8B-8F9A-4947-A735-1A6662FAB73B} - OProcSessId.dat
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBA96.tmp.dmp
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBD95.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBDC5.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBDD3.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERBE22.tmp.txt</Data>
<Data>\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_BrassConsoleApp._a65121a9886cf85d89cc2caea488de84ebbc6379_15a45da1_128d96b7-c591-43c7-8393-71b1b078c790</Data>
<Data>
</Data>
<Data>0</Data>
<Data>b2318536-61c1-4958-85c0-a6803c4bbd3b</Data>
<Data>268435456</Data>
<Data>e03e080836cae1e184c5d40b5330eaef</Data>
<Data>0</Data>
</EventData>
</Event>
任何帮助,将不胜感激!谢谢
解决方案
在尝试了多种方法并处理了一个多星期后,我决定通过用一个替换 3 个计时器来重组我的服务。单个计时器检查一天中的时间并调用适当的进程。我提出这个问题是希望有人知道破译事件日志条目。由于我没有得到任何回应,我需要继续寻找解决方案。感谢那些看过的人,请在我继续前进时忽略我最初的问题。
推荐阅读
- c++ - 使用系统调用与基于库的方法来压缩目录的优缺点
- ios - 如果 titleLabel.string / 单元格内容为空,则删除单元格
- angular - 我可以根据 Typescript 中的泛型类型将类型分配给类变量吗
- sql - 给定年份创建的所有表格的打印大小
- postman - newman:newman.run 中的 exportGlobals 选项不采用指定的路径
- git - 将 git 提交到远程存储库而不克隆任何本地存储库
- java - Spring Batch Job 的时间限制
- visual-studio - 防止由于 iis 锁定 dll 而导致网站构建失败
- javascript - Vue“v-for”中的“项目未定义”
- excel - Excel:索引并匹配具有多个列/行的单个条件