只是想弄清楚当 WCF 出现问题时会发生什么。我有一个使用 PerSession 的 InstanceContextMode 声明的服务合同的实现......
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
调用发生如下:
我的客户端调用服务器并调用 GetServerUTC() 以返回服务器的当前 UTC 时间。这是一种单向调用,服务器将在客户端准备好时回调客户端(在这种情况下简单地返回当前时间!)
服务器回调到客户端,出于测试目的,在客户端的回调实现中,我抛出了一个异常。
这在客户端中未处理(出于测试目的),客户端崩溃并关闭。
在服务器上,我处理 ICommunicationObject 上的故障事件处理程序...
obj.Faulted += new EventHandler(EventService_Faulted);
问题...
这会终止服务器上当前连接的会话吗?
我想我可以在这种方法中自由地做我想做的事情,例如日志记录或其他东西,但是我应该在这里做任何特定的事情来终止会话还是 WCF 会处理这个?
从最佳实践的角度来看,当回调出错时我应该怎么做?这是否意味着“您的客户发生了某些事情”并且这就是结束还是我在这里遗漏了什么?
此外,是否还有其他我应该处理的故障处理程序。
我已经阅读了很多关于 WCF 的内容,但对于出现问题时该怎么做似乎有点模糊。目前我正在我的客户端上实现一个状态机,它将管理连接并确定用户操作是否会发生,这取决于是否存在与服务器的连接 - 或者这是否是矫枉过正。
任何提示将不胜感激;)