我有一個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