セッションを使用するようにセットアップされた wcf サービス (IIS でホストされている) があります。うまくいくようです。がApplication_PostAcquireRequestState
呼び出されると、セッション ID があります。
私は最終的に次のように使用します(Global.asaxで):
if (Context.Handler is IRequiresSessionState)
{
log4net.ThreadContext.Properties["sessionId"] = Session.SessionID;
}
それはうまくいくようです。値は log4net プロパティに保存されます。
しかし、サービス操作 (実際の WCF サービス コード) が開始されると、log4net プロパティは再び null になります。
プロパティはスレッドごとに保存されるため ( ThreadContext
)、セッションが 1 つのスレッドでセットアップされ、別のスレッドで実行されることを意味しているとしか思えません。私は正しいですか?
log4net プロパティを正しいスレッドで設定する方法はありますか (すべてのサービス操作の開始時に上記の呼び出しを行うことを覚えておく必要はありません)。