首页新闻找找看学习计划

WCF静态 唯一客户端 10057 TCP ,偶尔错误 ?

0
悬赏园豆:100 [待解决问题]
public class MyServiceClientInitializer : IMyServiceClientInitializer
 {
        [ThreadStatic]
        private static MyServ.MyService _client;

        public MyServ.MyService Client
        {
            get
            {
                if (_client == null
                    || (_client.State != CommunicationState.Opened
                            && _client.State != CommunicationState.Opening))
                    IntializeClient();

                return _client;
            }
        }

        private void IntializeClient()
        {
            if (_client != null)
            {
                if (_client.State == CommunicationState.Faulted)
                {
                    _client.Abort();
                }
                else
                {
                    _client.Close();    
                }
            } 
            _client = new MyServ.MyService();
       _client.Open();
} }
问题补充:

用户操作 调用 , 每次都会取到这个 状态为opend  的  _client ,上面初始化时少了一个 _client.Open(); 部分服务器上 偶尔会出现 ?

条子#的主页 条子# | 初学一级 | 园豆:106
提问于:2014-01-10 14:37
< >
分享
所有回答(6)
0

10057 : Socket is not connected.也就是说你通过已经关闭或未打开的连接发送数据。仔细检查你的代码,找到为什么你需要在未打开或已关闭的连接上发送数据的具体原因。

Launcher | 园豆:45030 (高人七级) | 2014-01-10 14:46
0

小学生来帮顶一下!

贫民窟大侠 | 园豆:4270 (老鸟四级) | 2014-01-10 15:46
0

检查是否是多线程的原因,描述能否再详细一些点

az235 | 园豆:8263 (大侠五级) | 2014-01-10 22:21
0

连接关闭了,你还来使用,应该是客户端没有控制好连接、调用、释放的流程。

建议在每次调用前连接、再调用、然后释放的方法会稳定!

海洋风g | 园豆:224 (菜鸟二级) | 2014-01-12 10:41
0

小伙伴 加油,

男人要爽 | 园豆:10 (初学一级) | 2014-01-12 13:34
0

我遇到过这个问题,_client.State != CommunicationState.Opened && _client.State != CommunicationState.Opening
这个判断并不能保证_client一定可用,原因是_client.State 这个状态不是自动转换的,必须你做一次正常调用才会触发.

garry | 园豆:495 (菜鸟二级) | 2014-01-13 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册