+ -
当前位置:首页 → 问答吧 → WCF 页面打开,离开10分钟后,回来,timeout,求帮助

WCF 页面打开,离开10分钟后,回来,timeout,求帮助

时间:2011-12-15

来源:互联网

如题。

整个项目只用了一个 wcf链接,它默认的是10分钟有效时间。
现在这个项目完成大半年了,处于维护阶段。
有没有 有效的解决方案?谢谢大家。

报的信息分别是:

远程终结点不再识别此序列,这很可能是由于远程终结点上发生中止。wsrm:identifier的值不是已知的序列标识符。可靠会话出错。

通信对象System.ServiceModel.Channels.ServiceChannel无法用于通信,因为其处于“出错”状态。

作者: keenweiwei   发布时间: 2011-12-15

在页面 用setTimeout 调用wcf 来保持连接

9分钟的时候调用一次就可以了,然后返回会再次调用 setTimeout

作者: Sandy945   发布时间: 2011-12-15

复杂些 就是调用前判断 上次调用的时间来决定此次 保持连接的时机

作者: Sandy945   发布时间: 2011-12-15

谢谢阿非。
但我这是 winForm下的,所以没有 setTimeout方法刷新

作者: keenweiwei   发布时间: 2011-12-16

引用 3 楼 keenweiwei 的回复:

谢谢阿非。
但我这是 winForm下的,所以没有 setTimeout方法刷新

在WinForm中使用Timer定时器来做,因为你WCF默认的时间是10分钟,所以你应该在<10分钟的时间内,使用该定时器然后重新调用你的WCF。

http://www.cnblogs.com/SkyD/archive/2009/04/12/timer.html

作者: taomanman   发布时间: 2011-12-16

引用 3 楼 keenweiwei 的回复:

谢谢阿非。
但我这是 winForm下的,所以没有 setTimeout方法刷新

那更好解决了,System.Threading.Timer 用它

或者开启一个线程都可以的

作者: Sandy945   发布时间: 2011-12-16

该回复于2011-12-20 16:02:27被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#7楼 得分:0回复于:2011-12-21 15:31:39
感谢楼上各位热心的朋友!

我当时的解决方案是,在取服务对象的先判断一下当前状态,如果不是opened,就重新赋值:
step 1:
C# code

        public static TvosServiceRef.TvosServiceClient _proxy; //服务对象

        public static TvosServiceRef.TvosServiceClient proxy
        {
            get
            {
                try
                {
                    if (_proxy == null)
                    {
                        _proxy = new TvosServiceRef.TvosServiceClient();
                        _proxy.Open();
                    }

                    // Faulted,Created,Opened,Closed
                    if (_proxy.State.ToString().ToLower() != "opened")
                    {
                        _proxy.Abort();
                        _proxy = null;
                        _proxy = new TvosServiceRef.TvosServiceClient();
                        _proxy.Open();
                    }
                }
                catch (Exception ex)
                {
                    //Common.DisplayMsg("系统提示",);
                }
                return _proxy;
            }
            set { _proxy = value; }
        }



step 2: 在客户端利用 step1的服务对象通讯时,第1次(离开10分钟后回来的第1次)还是有可能会发生 CommunicationTimeOut的Exception,但是第2次通讯时正常。我暂时这么解决:
C# code

            try
            {
                dt = Common.proxy.GetDataSourceList(out sEx);
            }
            catch (Exception ex)
            {
                dt = Common.proxy.GetDataSourceList(out sEx);
            }


 
一个多礼拜过去了,都是OK的。

作者: nalt_   发布时间: 2011-12-20

相关阅读 更多

热门下载

更多