我想知道什么是处理WCF服务中超时的正确方法。
我有一项使用会议的服务。客户端进行连接,各种调用(当用户与客户端应用程序交互时),然后在某个时候断开连接。断开操作在服务器上执行清理(例如释放COM对象)。但是,客户可以(异常)终止(由于各种原因)而无需致电断开连接。receiveTimeout
到期后,服务将中止。我需要以一种使我可以正确清理会话的方式处理此操作。我该怎么做?
我可以处理活动吗?我可以使用它来实现和自定义服务的接口?我看过,但找不到东西。IErrorHandler
无助于超时。
我已经想到了每次对服务进行呼叫时重置该服务的计时器。当计时器通过时,客户端被视为断开连接,并且服务可以清理会话。这合适吗?(此间隔应始终小于绑定的receiveTimeout
。)
按http://msdn.microsoft.com/en-us/library/ff183865.aspx,WCF Sessions超时10分钟后或收到的任何指定。如果您的服务类实现IDISPOSABLE,我相信Dispose()呼叫应该在此时进行,这将为您带来第二/最后一次清理任何未偿还资源的机会。