How to detect a WCF session crash before calling a contract method?

Posted by brain_pusher on Stack Overflow See other posts from Stack Overflow or by brain_pusher
Published on 2010-05-21T08:29:49Z Indexed on 2010/05/21 9:00 UTC
Read the original article Hit count: 308

Filed under:
|

I am using a session mode for my WCF service. The problem is the following: if session is broken and no longer exists, client can't know it before calling a contract.

For example, if the service has been restarted, the client's session id is invalid, because that session has been closed on the server side.

I check the channel state before calling the contract and its value is CommunicationState.Opened even if session is already broken. So, when I call the contract after this check I get a CommunicationException with this message:

The remote endpoint no longer recognizes this sequence. This is most likely due to an abort on the remote endpoint. The value of wsrm:Identifier is not a known Sequence identifier. The reliable session was faulted.

Is there any workaround? I need a way to get an appropriate session state before calling a contract so that I can restore it without getting an exception.

P.S. The CommunicationException type is general, so I can't detect a session crash by catching this exception.

P.P.S. I have asked the similar question here, but in that case I didn't know the reason, now I don't know how to evade it.

© Stack Overflow or respective owner

Related posts about wcf

Related posts about session-state