我遇到了由于客户端和服务器之间的时间不同而发生的错误。通信是安全的,因此错误发生在System.IdentityModel.Tokens.SecurityToken DoNegotiation(System.TimeSpan)调用(从targetSite开始)。
我可以通过简单地更改客户端的计算机时间来重现此错误。
是否有可能准确检测到这种情况?
我应该自己检查一下吗?
或者我应该准备一个指出时差的错误信息作为可能的原因吗?
谢谢,洛萨
答案 0 :(得分:0)
安全通道使用PKI加时间戳加密,默认偏差为5分钟。也就是说,客户端和服务器之间的差异不应超过5分钟。有关其工作原理的详细信息,请点击“wcf clock skew”。
Windows,因为Win2k具有内置功能,可以将时钟与NTP服务器同步,因此请确保在服务器和客户端都启用此功能。
通常,业务应用程序不应检查时钟的准确性,因为准确性是许多网络功能可能依赖的系统问题。如果系统环境不健康,则同一台计算机中的许多其他应用程序也将失败。系统问题应该通过系统方式解决,在这种情况下,通过Windows的内置时间同步功能确保时钟准确。