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

本文转载:http://www.cnblogs.com/bcbr/articles/2288374.html

 

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

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

查了一下资料,原来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.系统自动同步服务端的时间,这样就能解决客户端和服务端时间不一致的问题,并却还能保证各个客户端的时间一致;具体实现方法很多,这里不再赘述。

 

时间: 2024-09-28 23:05:54

WCF客户端和服务器时间不一致,导致通道建立失败的问题)的相关文章

lotus notes客户端如何获取服务器时间

问题描述 本人想在notes客户端准确地获取domino服务器时间,在正常情况下通过以下方法可以实现:DimsessionAsNewnotessessionDimdbAsnotesdatabaseDimdocTmpAsNotesDocumentDimGetServerDateasStringDimdateTimeAsNewNotesDateTime("")Setdb=session.CurrentDatabaseSetdocTmp=db.CreateDocumentSetdateTim

js检测服务器时间与客户端是否相等

js检测服务器时间与客户端是否相等 <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>js检测服务器时间与客户端是否相等</title> <script language="javascript教程">  function checkDate(time) {     v

获取服务器时间-如何通过浏览器获取web服务器时间(c#)

问题描述 如何通过浏览器获取web服务器时间(c#) 因工作中发现部分客户端机器时间设置不正确,导致客户端所录入内容难以查找.故想通过直接从浏览器获取web服务器时间的方式确保时间的正确性.可是C#中DateTime.Now只能取得浏览器端的时间,无法获得web服务器端的时间,web服务器未搭建SQL服务器,这该如何解决? 解决方案 DateTime.Now应该是服务器上的时间,客户端时间一般是由浏览器发送过来的 解决方案二: 看错你的需求了,你可以在服务器上做个接口,然后调用那个接口,例如we

Winform 调用WCF客户端,所有服务端方法在运行的时候均找不到(编译没有问题)

  今天在开发过程中遇到了一个很恶心的问题,就是Form窗体ShowDialog的时候,直接报出下面的错误: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.MissingMethodException: 找不到方法:"XXX.XXX.DataObject.SPI.DataObjectColumn[] XXX.XXX.WCFClient.WCFService.ServiceClient

JQuery 获取当前服务器时间

原理很简单,就是获取服务器返回的头部信息中的Date属性  但是这个得到的GMT(格林尼治时间)  所以要转换一下为东八区的时间  这个就是响应服务器的当前时间 主要是处理客户端本地机器时间错误问题: var date = new Date($.ajax({async: false}).getResponseHeader("Date")); var bombay = date + (3600000 * 8); var time = new Date(bombay); 以上是小编为您精心

客户端和服务器的交流

服务器|客户端      上一章介绍了安装设置的一些基本问题和A S P的使用,以及其所提供的内置对象.本章将进一步研究两个最常用的对象.在浏览器(或其他用户代理)和We b服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象.    在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性.当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的< FORM >段

SEO诊断之服务器宕机导致网站被K

大家好,我是虚子雨.对于SEO诊断,一直是我坚持的一项工作,因为SEO诊断,诊断的是网站的过去和现在的病态,然后通过诊断找到网站的优化调整方向,这才是SEO诊断的魅力所在,就像一位神医,找到病人的病因,并开出合理的药方,迅速的治好他的病.最近一段时间,SEO届可以哀鸿一片,因为百度进行了有史以来最大规模的一次K站,相当大的一部分站长手上的网站都被降权或者被K,当然这对于想迅速学习SEO优化诊断知识的朋友,这些典型的网站就是一个比较不错的机会. 昨天在群里喊了几句,让群友给几个典型的案例,我这边来

游戏大厅从基础开始(3.5)——客户端与服务器的连接

可能要犯大忌讳 本次只有代码 所以补充两句 正在实现策略模式的constructor 所以最 近没有时间整理注释 大家凑合看 随后补说明 Code Namespace Communicate.TCP Class TCPLinkListener Inherits Global.WayneGameSolution.Communicate.LinkListener Public Shared ReadOnly propertyKeys As String() = {"Port", "

javascript实现获取服务器时间

  JS是在客户端运行的脚本,而不是运行在服务器上,通常来说,通过JS获取时间的时候获取到的时间是访客本地电脑上的时间,为了让网页上的时间不因访客电脑差异而不同,我们有必要直接JS获取服务器时间. 下面是完整的js获取服务器时间代码,是使用javascript获取服务器时间的完整实例,js动态刷新服务器时间. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34