2012-06-08 31 views
1

我失敗了,我們爲什麼要使用它來this MSDN article瞭解一遍又一遍,它是如何工作的:如何SessionChannel真正的工作

  1. 數據報會議
  2. 請求 - 響應與會話
  3. 複式與會議

讓我們假設我有

InstanceContextMode = InstanceContextMode.PerSession 
ConcurrencyMode=ConcurrencyMode.Single 
0服務

如果我有2個客戶端用於這個服務,並且他們同時在該服務器中激活一個方法,爲什麼其中一個應該等到服務完成另一個請求? PerSession + 2客戶端=「2」服務,每個服務都具有ConcurrencyMode.Single。我的錯誤在哪裏?

回答

2

至於你的問題中的B部分,有一個優秀的一系列關於WCF實例化,併發性和節流這裏的文章:

UPDATE

檢查每個客戶端調用的服務上的實例上下文ID,會話ID和線程ID,並首先驗證這些是不同的。

要檢查實例上下文ID:

OperationContext.Current.InstanceContext.GetHashCode() 

要檢查會話ID:

OperationContext.Current.SessionId 

要檢查線程ID:

Thread.CurrentThread.ManagedThreadId 

如果他們是爲每一個客戶都不同,那麼我無法解釋你遇到的問題。

+0

請參閱更新 –

+3

@StavAlfi我可以清楚地看到,休比我更耐心。你應該永遠不要*說,「只是回答」這是粗魯的,並假定有人對你有很好的迴應。 99%的答案不能幫助提問者,因爲這個問題的措辭或寫得不好。它發生在本地和非英語母語人士身上,這不是什麼大問題。改述或澄清你的問題 - 但不要求答案。 – Crisfole

+0

你是對的,我總是爲我的赤裸道歉。謝謝你的偉大的激情。 –