在等待来自服务的回调时会话超时时通知客户端

时间:2012-01-09 21:40:24

标签: c# .net wcf soa

我有一个面向服务的桌面应用程序。

我正在为特定操作调用服务,然后等待服务的回调。如果服务操作比会话超时值花费更多时间,则会在服务上获得异常。但是客户端一直在等待回调。

是否有一种方法可以通知客户端会话已超时?

2 个答案:

答案 0 :(得分:1)

除非我遗漏了某些内容,否则我猜您会想要捕获异常并相应地工作(比如使用无效的会话消息返回回调?)。

此外,您可以在回调异步等待时实现超时,因此即使会话过期或网络已关闭或Apocalypse破坏网络通信,您的客户端也可以转回控制并通知用户。

“请再次登录并尝试验证您的网络并检查是否有任何结束日期的迹象。”

编辑:根据反馈意见,我将详细介绍一下您对服务器与客户端互动的看法。

您遇到的主要问题是某些事件发生(会话过期或意外故障),阻止客户端知道服务器不会回复。您无法计划灾难性故障,但您确定可以规划无效会话,无效身份验证,无效数据等。在这种情况下,服务器可能应该更加冗长,特别是如果您正在使用瘦客户机模型,该模型在服务器回拨之前将一直无效。

然而,当沟通没有发生时,如何处理真正的失败?如果你可以认为通信错误可能发生(我真的建议你这样做),你应该让你的客户足够智能,至少处理通信错误。完成这样的事情很重要,因为首先,通信不可靠(发生错误配置,硬件故障等)。其次,当这样的事情发生时,你冒着破坏你的功能的风险,或者提供真正糟糕的用户体验。并非错误是良好的用户体验,而是响应更快的应用程序。

TL; DR:如果需要,向客户端和用户提供反馈。重要的是,知道会发生什么。

答案 1 :(得分:0)

你为什么要使用会话?如果使用wsDualHttpBinding进行回调,则需要使用会话,但如果使用netTcpBinding,则不需要会话。那么就没有时间了。