У меня есть служба wcf (размещена в IIS), которая равна setup to use sessions. Кажется, это работает. Когда вызывается Application_PostAcquireRequestState
, у меня есть идентификатор сеанса.Выполняет ли WCF сеанс более чем в одном потоке?
я в конечном итоге использовать его, как это (в моей Global.asax):
if (Context.Handler is IRequiresSessionState)
{
log4net.ThreadContext.Properties["sessionId"] = Session.SessionID;
}
Это, кажется, работает хорошо. Значение сохраняется в моем свойстве log4net.
Но когда начинается моя сервисная операция (мой фактический код службы WCF), свойство log4net равно null.
Поскольку свойство хранится в потоке (ThreadContext
), я могу только предположить, что это означает, что сеанс настроен на один поток, а затем выполнен в другом потоке. Я прав?
В любом случае, чтобы получить свойство log4net, установленное на правильной нити (не забудьте сделать вышеуказанный вызов в начале каждой отдельной операции службы)?
Я всегда ожидаю участия нескольких потоков. Я не знаю, где я это сделал. Вы изучали (обычай) поведение на службе, чтобы достичь того, чего хотите? – rene