我有一个wcf服务(托管在IIS中),是setup to use sessions。它似乎工作。当调用Application_PostAcquireRequestState
时,我有一个会话ID。WCF是否在多个线程上运行会话?
我最终使用它像这样(在我的Global.asax):
if (Context.Handler is IRequiresSessionState)
{
log4net.ThreadContext.Properties["sessionId"] = Session.SessionID;
}
这似乎很好地工作。该值存储在我的log4net属性中。
但是当我的服务操作开始时(我的实际WCF服务代码),log4net属性再次为空。
由于该属性是按线程(ThreadContext
)存储的,我只能假设这意味着会话在一个线程上设置,然后在另一个线程上执行。我对吗?
有没有办法让我的log4net属性设置在正确的线程上(而不必记住在每个服务操作开始时进行上述调用)?
我总是期望涉及多个线程。我不确定我是在哪里选择的。您是否在自己的服务中寻找(定制)行为来实现您想要的? – rene 2013-05-01 14:28:20