我正在爲我的WCF服務使用會話模式。問題如下:如果會話中斷並且不再存在,客戶端在調用合同之前無法知道它。如何在調用合同方法之前檢測到WCF會話崩潰?
例如,如果服務已重新啓動,則客戶端的會話標識無效,因爲該會話在服務器端已關閉。
我在調用合同前檢查通道狀態,並且即使會話已損壞,其值爲CommunicationState.Opened。因此,當我在此檢查後致電合同時,我收到此消息的CommunicationException:
遠程端點不再識別此序列。這很可能是由於遠程終端上的終止。 wsrm:Identifier的值不是已知的序列標識符。可靠的會話有問題。
有什麼解決方法嗎?我需要一種方法來在調用合同之前獲得適當的會話狀態,以便在不發生異常的情況下恢復它。
P.S. CommunicationException類型是通用的,所以我無法通過捕獲此異常來檢測會話崩潰。
P.P.S.我已經問過類似的問題here,但在那種情況下,我不知道原因,現在我不知道如何逃避它。
是的,它似乎唯一的方法是捕獲異常,但CommunicationException類型太籠統。 – 2010-05-24 08:18:17