【问题标题】:Keep WCF Service Connected保持 WCF 服务连接
【发布时间】:2009-01-10 23:34:31
【问题描述】:

即使出现故障状态,我如何让我的 WCF 服务客户端与 WinForm 保持连接?

谢谢。

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    回答我自己:)

    您可以订阅 InnerChannel 事件

                svc.InnerChannel.Closed += InnerChannel_Error;
                svc.InnerChannel.Closing += InnerChannel_Error;
                svc.InnerChannel.Faulted += InnerChannel_Error;
    

    然后处理异常并重新创建服务代理

    private void InnerChannel_Error(object sender, EventArgs e)
    {
        var svc = _entrepotService as EntrepotServiceProxy;
        try
        {
            if (svc != null)
            {
                if (svc.State != CommunicationState.Faulted)
                {
                    svc.Close();
                }
                else
                {
                    svc.Abort();
                }
            }
        }
        catch (CommunicationException)
        {
            if (svc != null) svc.Abort();
        }
        catch (TimeoutException)
        {
            if (svc != null) svc.Abort();
        }
        catch
        {
            if (svc != null) svc.Abort();
            throw;
        }
        _entrepotService = new EntrepotServiceProxy();
    }
    

    【讨论】:

    • (只是为了澄清)这并不完全保持连接打开(正如 Marc 所说,故障状态意味着(通常)连接已关闭。这是在关闭事件时重新创建连接。
    【解决方案2】:

    据我所知,故障状态通常是 WCF 代理的终端。所以不,我不这么认为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多