2011-09-05 88 views
1

經過幾個WCF教程,我可以開發一個WCF客戶端/服務器應用程序,服務和客戶端應用程序都是Windows窗體應用程序。我可以通過指定用戶名和密碼來使用每個客戶端來調用服務。我的WCF服務應用程序也使用他們的用戶名顯示所有連接的客戶端。但是,當多個客戶端向服務發送請求時,我無法識別哪個用戶調用了該方法。這一點很重要,因爲我的應用程序傾向於爲每個客戶端處理都有自己的會話,就像任何常規的ASP.NET應用程序一樣。每個用戶都有自己的標識和自己的應用程序域。訪問wcf服務上的客戶端標識

此外,我希望我的服務將消息發送回客戶端,所以我實現了回調合約。另外,我正在使用netTcpBinding,因爲我的應用程序需要在我的Intranet上運行。

如何在WCF客戶端/服務器應用程序中實現此方案?

請幫忙嗎?

感謝


感謝您在以前的答覆。它對我很有幫助。 現在,如果我想使用使用用戶名和密碼的自定義身份驗證。 讓我們假設我有50個有效用戶名和密碼的客戶。我如何才能獲得在特定時間點調用服務方法的客戶身份(其中有50人)?

感謝

回答

2

在你的服務器端代碼,你應該能夠從安全上下文檢索調用者的身份 - 是這樣的:

if(ServiceSecurityContext.Current != null && 
    ServiceSecurityContext.Current.PrimaryIdentity != null) 
{ 
    string userName = ServiceSecurityContext.Current.PrimaryIdentity.Name; 
} 

如果你調用Windows身份驗證服務(這可能也適用於你 - 如果你在公司局域網上,就像它看起來那樣) - 你應該能夠訪問安全上下文的.WindowsIdentity而不是(對於任何其他認證機制,這將是null)。

+0

嗨,謝謝你的回覆。我會試一試,讓你知道如果我需要更多的幫助。 – TJP