前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WCF学习五(客户端和服务器时间不一致,导致通道建立失败的问题)

WCF学习五(客户端和服务器时间不一致,导致通道建立失败的问题)

作者头像
跟着阿笨一起玩NET
发布2018-09-18 17:44:53
9660
发布2018-09-18 17:44:53
举报

最近,经常有客户反应,前天还用的好好的系统,今天就不能用了。

考虑到系统近来没有做过改动和升级操作,所以从客户的机器环境入手解决,最后发现客户端的日期时间和服务端的日期时间有较大差异,将客户端机器修改成和服务端的日期时间一致后,系统恢复正常。

查了一下资料,原来WCF安全校验通道,在建立时,会将客户端和服务端的时间进行对比,如果差异超过一定范围,通道建立工作就会失败;这个时间范围默认为5分钟,可通过配置进行修改,具体方法可到网上搜索。

另外,客户端为什么用的好好的,突然就不行了,最后检查发现,客户端的机器在同步网络上的时间,这样,在客户端的机器同步了网络时间并且和服务端时间不一致时,系统就会出现异常。

好了,既然发现了问题,那么怎么解决呢,想到的办法有3个:

1.将WCF配置为非安全校验类型,这个风险较大,直接放弃

2.修改配置,将5分钟差异范围增大为30分钟,或更长,如下:

  这个方法带来的问题是,我们必须使用customBinding绑定方式;并且,各个客户端的时间可能不一致,导致业务数据混乱

  <customBinding>
       <binding name="MyCustomBinding">
           <transactionFlow />
           <security authenticationMode="UserNameForSslNegotiated">
               <secureConversationBootstrap>
                   <localClientSettings maxClockSkew="00:30:00" />
                   <localServiceSettings maxClockSkew="00:30:00" />
               </secureConversationBootstrap>
               <localClientSettings maxClockSkew="00:30:00" />
               <localServiceSettings maxClockSkew="00:30:00" />
           </security>
           <textMessageEncoding>
               <readerQuotas maxStringContentLength="500000"/>
           </textMessageEncoding>
           <httpTransport maxReceivedMessageSize="10485760" maxBufferPoolSize="524288" />
       </binding>
   </customBinding>

3.系统自动同步服务端的时间,这样就能解决客户端和服务端时间不一致的问题,并却还能保证各个客户端的时间一致;具体实现方法很多,这里不再赘述。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-12-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档