我在iis中托管了一个wcf服务。端点使用wsHttpBinding。
我有很多客户正在使用该服务 互联网连接不稳定。 客户端使用该服务在db中插入数据。
客户端中异常处理的最佳做法是什么 每次客户端需要插入数据(调用服务)时应该使用using statemen并初始化新连接,或者每次检测到没有连接时应该保持打开引用并重新初始化,这是不是很好?
我不喜欢客户端调用服务向用户显示错误,告诉他再次重试。它可以自动重试吗?
此致
答案 0 :(得分:1)
首先不要在处理WCF代理或通道时使用。使用此approach关闭代理或频道。代理的使用取决于您的应用程序,您的要求和当前配置。
默认情况下,WsHttpBinding使用带有Windows身份验证的消息安全性并建立安全上下文。这意味着在通信开始时,用户通过身份验证并创建安全上下文。安全上下文类似于安全会话,因此用户不必在来自同一代理的后续调用中进行身份验证。安全上下文的使用仅在您计划为多个调用使用代理时才有用,否则会产生开销。但是创建安全上下文也有副作用 - 单个服务实例处理来自该代理的所有调用。服务的生命周期由几次超时控制。最重要的是接收超时,默认值为10分钟。如果代理的请求在10分钟内没有到达,则释放实例并关闭通道但代理不知道它。下次使用代理时,它将触发异常。在服务请求处理期间,通道也会被任何未处理的异常关闭。因此,如果您想重用代理,则必须处理检查通道状态的额外复杂性,并在出现问题时重新创建代理。