c# - 在等待服务回调时 session 超时时通知客户端

标签 c# .net wcf soa

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

我正在为特定操作调用服务,然后等待来自服务的回调。如果服务操作完成所需的时间超过 session 超时值,我会收到服务异常。但是客户端一直在等待回调。

有没有办法让客户端收到 session 超时的通知?

最佳答案

除非我遗漏了什么,否则我猜你会想捕获异常并相应地工作(比如返回带有无效 session 消息的回调?)。

此外,您可以在回调异步等待中实现超时,因此即使 session 过期或网络中断或 Apocalypse 破坏了网络通信,您的客户端也可以收回控制权并通知用户。

“请重新登录并尝试验证您的网络并检查是否有末日迹象。”

编辑:根据反馈的要求,这里更详细地介绍了我对您应该拥有的服务器-客户端交互的想法。

您面临的主要问题是某些事件的发生( session 过期或意外故障)使客户端无法知道服务器永远不会回复。您无法为灾难性故障做好计划,但您肯定可以为无效 session 、无效身份验证、无效数据等做好计划。在这种情况下,服务器可能应该更加冗长,特别是如果您使用的是瘦客户端模型,在服务器 ping 回来之前什么都不做。

但是,当通信没有发生时,如何处理真正的故障?如果您考虑到可能会发生通信错误(我真的建议您这样做),您应该让您的客户端至少足够智能以处理通信错误。完成这样的事情很重要,因为首先,通信不那么可靠(发生配置错误、硬件故障等)。其次,当这样的事情发生时,您将面临功能消失或提供真正糟糕的用户体验的风险。并不是说错误就是好的用户体验,而是响应速度更快的应用程序才是。

TL;DR: 向客户端提供反馈,并在需要时向用户提供反馈。双方都知道发生了什么很重要。

关于c# - 在等待服务回调时 session 超时时通知客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795562/

相关文章:

c# - Safari 浏览器中的 Asp.Net 表单例份验证失败

c# - 在 C# 中实现 WebDAV 服务器?

wcf - 使用 REST WCF 数据服务作为 SQL 报告服务的数据源

asp.net - 将声明式的 PrimaryPermission 转换为编程式的 .Demand

c# - WCF 中的两个接口(interface)和一个具体类

c# - 为什么 C# 动态解析内部属性而不是方法?

.net - 是否有在twisted中实现silverlight的策略文件服务器?

asp.net - 仅在 ASP.net 内部用于 AJAX 消耗的 ASMX 或 WCF

c# - 推送通知 Chrome Mobile Ver 42+

.net - 如何查看 LiteDB-NoSQL 中存储的数据