title: Detect socket disconnect in WCF
body: <p>We're building a WCF server (.NET 4.0). It will only use net.tcp transport.</p>
  
  <p>When a client closes the TCP connection, the server gets unhandled CommunicationException, and terminates.</p>
  
  <p>Q1. How do I handle the CommunicationException so the server does not terminate and continues serving other clients?</p>
  
  <p>Q2. In the handler, how do I get SessionId of the session that was aborted? I need this to do clean up some session-specific data.</p>
  
  <p>Thanks in advance!</p>
  
  <p>P.S. The connection is over the Internet, so the socket may be closed anytime, regardless on whether the client disconnects gracefully, or not.</p>