2012-01-30 55 views
0

我使用NetTcpBinding創建了一個會話服務:每個客戶端開始與服務的會話,所以我需要以某種方式識別每個會話。顯然,當一個會話結束時,其標識符也應該改變,以便應用程序可以理解客戶端可能已經改變。如何唯一標識連接?

我不知道WCF或者一般情況下.NET是否提供了一種基於我剛剛描述的要求唯一標識各種活動會話的方法。

或者我想到了以下思路:(即ConnectionNumber

public class ConnectionIdentifier { 
    public UInt16 ConnectionNumber {get; set;} 
    public Uint64 ConnectionTime {get; set;} 
} 

因此,建立一個新的會話的時候,我給你一個會話數它和當時的會議開始時(即ConnectionTime = DateTime.Now.Ticks)。 但是,在這種情況下,如何識別會話結束以釋放相應的號碼?

此外,是否有其他方法來唯一標識會話?

+1

[GUID](http://msdn.microsoft.com/en-us/library/system.guid.aspx)秒。 (如果由於某種原因內置WCF會話不適合您的使用情況。) – millimoose 2012-01-30 14:55:31

回答

1

WCF爲此已內置功能。做到這一點的方法是將您的服務合同標記爲「每次會話」,然後爲每個客戶端/會話獲取您的服務實例。

參見:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

+0

這樣,我可以爲特定的客戶端/會話調用回調函數嗎? – enzom83 2012-01-30 15:20:02