私は WCF サービスを持っており、データベースへの各呼び出しをログに記録します。後で例外が発生した場合も、別のデータベースに記録されます。
何が例外の原因であるかを確認できるように、これらの両方のログを結び付ける方法が必要でした。これを行うには、呼び出しごとに取得できる何らかの一意の ID が必要でした。
全体が単一のスレッドで実行されているため、たとえば、スレッド名を GUID に設定できます。System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();
しかし、これは少しハックです。
ネットを検索して発見しましSystem.Threading.Thread.CurrentContext.SetProperty()
たが、そのコンテキストが正確に何であるか疑問に思っています。スレッドの期間中にプロパティを保存するように設計されていますか? スレッドごとに一意ですか?
5つの同時WCF呼び出しがある場合、いわば「呼び出しごと」ではない場合、コンテキストで起こっていることの間に競合が発生することは望ましくありません。
誰かが明確にすることができますか?