我有一个设置为使用会话的 wcf 服务(托管在 IIS 中) 。它似乎工作。当Application_PostAcquireRequestState
被调用时,我有一个会话 ID。
我最终像这样使用它(在我的 Global.asax 中):
if (Context.Handler is IRequiresSessionState)
{
log4net.ThreadContext.Properties["sessionId"] = Session.SessionID;
}
这似乎工作正常。该值存储在我的 log4net 属性中。
但是当我的服务操作开始时(我的实际 WCF 服务代码),log4net 属性再次为空。
由于该属性是按线程 ( ThreadContext
) 存储的,因此我只能假设这意味着会话是在一个线程上设置的,然后在另一个线程上执行。我对吗?
无论如何要在正确的线程上设置我的 log4net 属性(不必记住在每个服务操作开始时进行上述调用)?