微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WCF服务无法调用另一台机器上的服务

如何解决WCF服务无法调用另一台机器上的服务

情况设置如下:多个 WCF 服务托管在一个子网内的多个虚拟机上的 IIS 上。假设我们有:

  • IP 地址为 10.0.8.100 的虚拟机 A
  • IP 地址为 10.0.8.101 的虚拟机 B
  • IP 地址为 10.0.8.102 的虚拟机 C

A、B 和 C 在同一个域内。

机器 A 有负责身份验证的 WCF 服务,机器 B 和 C 都有调用此身份验证服务的服务。

使用绑定

<binding name="WsHttpBinding_IAuthenticationService" 
     receiveTimeout="00:10:00" 
     sendTimeout="00:10:00"
     maxBufferPoolSize="2147483647" 
     maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" 
              maxStringContentLength="2147483647" 
              maxArrayLength="2147483647" 
              maxBytesPerRead="2147483647" 
              maxNaMetableCharCount="2147483647" />
<security mode="Message">
    <message clientCredentialType="None" />
</security>

一切正常,直到有一天,当机器 B 和 C 对机器 A 上的身份验证服务的单次调用失败并出现异常时:

An unsecured or incorrectly secured fault was received from the other party. 
See the inner FaultException for the fault code and detail.

内部异常说:

An error occurred when verifying security for the message.

同时,这个服务可以通过它在浏览器中的地址访问,我可以成功地从任何其他机器ping任何机器。

我知道这个异常最常见的原因是时间偏差超过了 WCF 认的 5 分钟。我以前遇到过这个问题,但这是另一种情况,因为所有虚拟机上的时间都是同步的,并且时区选择正确。

有趣的提示:我尝试将提到的身份验证服务从 A 重新定位到 B,而不是从 C 调用它,但我没有收到此异常。

我怀疑网络布局/设置等中的某些内容发生了变化并导致了这种情况,但我没有任何确凿的证据,因为目前网络管理员无法联系。

再次 - 一切正常,上个月没有更新交付到此环境中。

我应该去哪里寻找有关这种情况原因的任何线索?

谢谢。

解决方法

事实证明,时间偏差实际上是导致此异常的原因。所有虚拟机都配置为以 AM/PM 格式显示时间,时间偏差正好是 12 小时。由于我们通常使用 24 小时格式,因此未考虑此功能。 案件已结。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。