LogParser.DLL アセンブリを使用したいので、通常のコンソール アプリケーションでテストしたところ、機能し、それをサーバーに入れ、テストのために win 2003 に送信しました (データベースなどのサービスをインストールするための空き容量がありません)。 .. eventViewer ログで常に FileNotFoundException エラーを返しました...
スタック トレースを使用して実際に何が起こっているかを確認しようとしましたが、DLL がまったくインポートされないことがわかりました。Google で検索した後、この Web サイトで答えを見つけました。アセンブリ コマンド、私が書いた場合は tblimp "ファイル名" /out "新しいファイル" でした
私は自分のアセンブリを作成しました。それは.net 4だったので、古いVSに行き、.net 2.0.x互換のDLLを提供するために同じことをしました。それを使用して動作しましたが...
新しいエラーが表示されました:
エラー メッセージ: CLSID {8CFEBA94-3FC2-45CA-B9A5-9EDACF704F66} を持つコンポーネントの COM クラス ファクトリの取得は、次のエラーが原因で失敗しました: 80040154。
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();
}
例外をキャッチして、データがインポートされているかどうかを確認しようとしましたが、「最終的に」ブロックに if(rs!=null) がなければ、rs は何も返さないようです。それは、rs が null であることを意味するエラー自体です。
イベントの種類: 情報 イベント ソース: EventLoggerService イベント カテゴリ: なし イベント ID: 0 日付: 2012 年 8 月 5 日 時刻: 2:47:20 AM ユーザー: 該当なし コンピューター: HF-SERVER-PC 説明: Debug-EventReaderClass: T1 -2
クラス変数情報:
_logProvider: FileEventReaderService.Services.Logger.EventLogger _logProviderDebugMode: FileEventReaderService.Services.Logger.DebugLogger _licenceState: Ok _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」ライブラリの
そして、助けてください、それは私にとって非常に重要なことです。それでも、論理的なバグをコンパイルするのではなく、論理的なバグをチェックするだけで数か月が必要です :|