最近,经常有客户反应,前天还用的好好的系统,今天就不能用了。
考虑到系统近来没有做过改动和升级操作,所以从客户的机器环境入手解决,最后发现客户端的日期时间和服务端的日期时间有较大差异,将客户端机器修改成和服务端的日期时间一致后,系统恢复正常。
查了一下资料,原来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.系统自动同步服务端的时间,这样就能解决客户端和服务端时间不一致的问题,并却还能保证各个客户端的时间一致;具体实现方法很多,这里不再赘述。
相关推荐
wcf c# 服务器 客户端 示例 wcf c# 服务器 客户端 示例
wcf服务端与客户端的例子
基于wcf的客户端和服务器源码实例。
WCF实现客户端和服务器之间的通信。源代码.希望对你有帮助。
代码配置WCF服务端和客户端。只是个例子,并不复杂。只是个简单实现。如果需要程序的项目,就不要看了。 实现客户端和服务端基于代码的方式设置,互相访问。
功能由来:WCF服务器断开,客户端无法连接将导致错误。 解决:对同一个WCF宿主功能布设在多台服务器上,客户端调用方法前会测试连接服务器,当第一台服务器无法连接时会切换到第二台服务器。当所有服务器无法连接...
WCF服务器与客户端
wcf 服务器 客户端正简单 事例 wcf 服务器 客户端正简单 事例
c# wcf双工通信客户端demo,服务端在下面
WCF操作实例包括服务器端与客户端的经典实例。
.net WCF 服务器客户端 全双工服务调用,vs2010 .net4.0环境,同时可调用winform与web服务,比较初级的内容。
wcf 服务,网页端向客户端发送消息,可以修改弹幕,源码提供。
WCF编程:WCF服务和客户端的建立[归纳].pdf
C#WCF实例,服务器与客户端程序
android wcf webservice通讯例子,包括服务器和客户端,已测试通过,可以使用
两个解决方案实现WCF远程调用
WCF客户端动态设置WCF服务器主机.doc
分享wcf http绑定方式的客户端调用,和wcf http绑定服务端配合使用,供大学共同学习提高!分享无处不在
使用vs2008创建WCF服务和客户端代理