2014-03-25 64 views
1

我有一個WCF服務,我希望爲我的身份驗證方法維護會話。如何在WCF服務中維護會話

我已經閱讀了各篇文章,並應用了一些在WCF服務中維護會話所需的以下更改,因爲默認情況下WCF不受支持。

1- [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]在SVC文件。

2- [的ServiceContract(SessionMode = SessionMode.Allowed)]中的ServiceContract

3-使用的wsHttpBinding作爲basicHttpBinding的不支持會話。

我正在使用WCFTestClient撥打我的服務。我檢查了我的TestClient的配置,它使用的是basicHttpBinding,這是問題的原因。

我無法在我的Service webconfig中實現3點,也無法更改我的TestClient的配置。任何人都可以請指導我。謝謝

回答

0

爲了解決這個問題,我在服務中實現了自己的SessionHandler。

  • 含有字典<的Guid一個線程安全單個類,SessionData >
  • 服務方法:GUID RegisterClient(CLIENTNAME CLIENTNAME){/ *添加客戶端會話* /}
  • 服務方法:BOOL UnregisterClient( GUID clientGuid){/ *從會話* /移除客戶}
  • 服務方法:無效DoThisOnServer(GUID clientGuid){/ *服務功能* /}
  • 空隙CheckTimeout(){/ *迭代支配字典和移除出定時會議* /}

提示:

  • SessionData包含CLIENTNAME,TimeOfConnection,YourUsefulData
  • CLIENTNAME爲IP-住址或一些其它初始識別器

客戶有權寄存器和一個佔位符所有以下操作僅在SessionHandler中提供的Guid存在時完成。