II6を使用しています。例外があったと思われるMethod(LogMessageToSIFDB)がありますが、
Task.Factory.StartNew(() => LogMessageToSIFDB(inClientID, tmpByte, Modified, SIF_MessageID, SIF_TimeStamp));
方法は非常に簡単です
- DBに接続する
- Sprocを呼び出す
- 接続を閉じる
DB接続が正常に機能するようになりました。私が抱えている問題は、例外が発生した場合、何もログに記録されないことです。
ロジックフローを変更すると、SProcが呼び出されず、イベントなどに何もログに記録されません。
- 新しいApplicationException( "Hello from LogMessageToSIFDB()");をスローします。
- DBに接続する
- Sprocを呼び出す
- 接続を閉じる
一言で言えば、これは何かがログに記録される原因となることは何もしません。
Task.Factory.StartNew(() => { throw new ApplicationException("Hello from LogMessageToSIFDB()"); });
これが私がやろうとしていることです。このコードは、エンジニアリングから提供されたインターフェイスを実装するDLLに含まれています。それらは、XMLメッセージであるストリームを渡します。そのメッセージを変更する必要があります。元のメッセージもログに記録する必要があります。
メッセージをDBに記録すると、IISスレッドのブロックが長くなるだけなので、タスクを作成して非同期で実行することにしました。呼び出しがたまに機能しない場合、私は本当に気にしませんが、現在の問題をデバッグしている場合は、エラーメッセージを表示する必要があります。
タスクの未処理の例外がイベントログに表示されることを期待していましたが、どこにも何も表示されていません。
非同期ロギングは必須ではありませんが、推奨されます。最悪の場合は、タスクを削除して同期して実行することです。