2009-11-03 48 views
5

如何枚舉某個服務主機的所有連接客戶端的某種位置標識符?我正在使用雙工連接進行長時間運行計算。服務主機是一個單身人士。獲取wcf服務的連接客戶端列表

我可以找出(在.net 3.5中)呼叫客戶端的IP,但我不確定如何獲得所有連接的客戶端的IP。

回答

1

我不認爲有什麼內置的,但它會很容易建立一個跟蹤IServiceBehavior + IDispatchMessageInspector,將檢查RemoteClientEnpointMessageProperty,然後將調用分派到服務impl並粘住客戶端IP到共享列表中,並在通話/會話結束時將其刪除。

2

默認情況下,WCF促進使用「每個呼叫」服務,例如,客戶端調用,處理請求,然後客戶端立即再次斷開連接。

WCF不適合長時間運行的連接 - 所以你不能真正「枚舉當前連接的用戶」,因爲沒有任何(或只是爲了一小部分一秒)。

WCF不像Windows域服務器,您可以在其中登錄並長時間保持登錄狀態。

+0

對不起,我不清楚我的帖子,但我沒有使用默認的服務行爲。 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple)] With InstanceContexMode.Single有一個實例的壽命比默認的「per-call」模式更長。 當前實施的服務使用回調協議在準備就緒時發送結果。 客戶端將其與服務器的連接緩存,以便它們可用於多個請求。連接長期運行。 – Sindhudweep 2009-11-05 22:05:01

+0

好的 - 我不認爲這是一個好主意,但我不知道你的設置的細節;不幸的是,在WCF 3.5中,對管理和監控的支持並不是很多 - 這將成爲「都柏林」項目的一部分 - IIS7/WAS的管理附件預計在.NET 4之後發佈一段時間(2010年3月)。 – 2009-11-06 05:33:36

相關問題