我希望使用 LogParser.DLL 程序集,所以我在普通控制台应用程序上对其进行了测试,它可以工作,然后我将它放入服务器,发送到 win 2003 进行测试(我没有更多可用空间来安装数据库等服务),。 .. 它总是在 eventViewer 日志中返回 FileNotFoundException 错误...
我尝试使用堆栈跟踪来查看实际发生的情况,我发现 DLL 根本没有导入,在谷歌搜索后,我在这个网站上找到了答案,告诉使用 .Net 命令提示符,然后使用导入汇编命令,如果我写它是 tblimp "file name" /out "new file"
我制作了我的程序集,它是 .net 4,所以我去了我的旧 VS,并做了同样的事情来提供一个 .net 2.0.x 兼容的 DLL,我使用它并且它有效,但是......
出现新错误:
错误消息:检索具有 CLSID {8CFEBA94-3FC2-45CA-B9A5-9EDACF704F66} 的组件的 COM 类工厂失败,原因是以下错误:80040154。StackTrace:在 FileEventReaderService.EventReader.ReadEventsAndStoreInDatabase(字符串 startDate,字符串 endDate)
ILogRecordset rs = null;
try
{
((DebugLogger) _logProviderDebugMode).Log("T1-2", "Debug-EventReaderClass",
EventLogEntryType.Information);
LogQueryClass qry = new LogQueryClass();
COMEventLogInputContextClass eventLogFormat = new COMEventLogInputContextClassClass();
((DebugLogger) _logProviderDebugMode).Log("T1-3", "Debug-EventReaderClass",
EventLogEntryType.Information);
string query = "select * from security WHERE TimeGenerated >= '" + startDate +
"' and TimeGenerated <'" + endDate +
"' and (eventid=560 or eventid=540)";
rs = qry.Execute(query, eventLogFormat);
((DebugLogger) _logProviderDebugMode).Log("T1-4", "Debug-EventReaderClass",
EventLogEntryType.Information);
for (; !rs.atEnd(); rs.moveNext())
{
//Processes
}
}
catch(Exception ex)
{
((DebugLogger)_logProviderDebugMode).Log(
"T1-5\nError Msg: " + ex.Message + "\nStackTrace: " + ex.StackTrace
, "Debug-EventReaderClass",
EventLogEntryType.Error);
}
finally
{
((DebugLogger)_logProviderDebugMode).Log("T1-6", "Debug-EventReaderClass",
EventLogEntryType.Information);
if (rs != null)
rs.close();
}
我试图捕捉异常并查看是否导入了任何数据,但似乎 rs 什么也不返回,也没有“finally”块中的 if(rs!=null) 再次它本身就是一个错误,这意味着 rs 为空
事件类型:信息事件源:EventLoggerService 事件类别:无事件 ID:0 日期:2012 年 8 月 5 日时间:上午 2:47:20 用户:不适用计算机:HF-SERVER-PC 描述:Debug-EventReaderClass:T1 -2
类变量信息:
_logProvider:FileEventReaderService.Services.Logger.EventLogger _logProviderDebugMode:FileEventReaderService.Services.Logger.DebugLogger _licenceState:好的 _dataBase:deadManN _interval:5 _timeGap:1 _previousReadTime:8/5/2012 2:40:19 AM _lastReadTime:8/5/2012 2:46:20 AM _parserLock:System.Object _subtleTime:TimerLib.SubtleTime _parserService:FileEventReaderService.Services.Util.ParserService5 _connectionStringBuilder:FileEventReaderService.Services.Util.ConnectionStringBuilder _lastTime:18 _minutes:18
有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的帮助和支持中心 。
上面的日志,是我在错误之前做的最后一个日志,然后它显示了记录在“catch”块中的日志,所以错误可能在这里:
LogQueryClass qry = new LogQueryClass();
COMEventLogInputContextClass eventLogFormat = new COMEventLogInputContextClassClass();
所以我再次开始搜索我的错误消息,并发现了一些我无法单独处理的事情,
例如,我看到有人对您说需要注册 DLL manulay 或使用 dllregisterservice 或有关将应用程序仅编译为 86X cpu 类型的事情,但我不想这样做......因为我不为单个用户编写这个使用已知的硬件和软件...
现在有人可以帮忙吗?在设置应用程序时注册 dll 或任何其他可能对此事有帮助的事情?“Interop.MSUtil.dll”库?
并且请帮助,这对我来说非常重要,但我仍然需要太多时间,大约几个月后,我只检查逻辑错误,而不是编译错误:|