Windows8.1 wcf通信常见算法异常

Windows 8.1 wcf communciation common algorithm exception

我们遇到了一个已经运行了 5 年的软件的奇怪问题。最近我们更换了 PC,我们现在正在 windows 8.1

上开发

问题:我们有一个网站在后台连接到使用证书的 wcf 服务。然后我们启动网站并尝试登录。 首先我们发现我们有一个异常:

The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:19:59.9910127'

一条奇怪的消息,因为我们立即收到了这条消息,所以我们不需要等待 20 分钟才能超时。 因为我们需要找出到底发生了什么,所以我们在另一台装有 windows 8.1 的电脑上尝试了此设置。一切正常,网站没有任何问题。 然后我们决定交换连接,看看我们是否可以重现,所以我们最终是这样的:

  1. 我的大学 => 好的
  2. 我的大学生 => 好的
  3. Collegae to itself => ok
  4. 我自己 => 错误

然后我试图在 windows 日志中寻找答案。在系统日志中。我发现 tls 协议存在问题。 Windows eventid 36888, Windows eventid 36874 然后我们搜索了关于 tls 的问题,因为这 2 个事件 ID,但我们找不到任何东西。

更奇怪的是,我们在我的机器上本地安装了一个胖客户端,它通过相同的 wcf 服务连接,而且这个也能正常工作。胖客户端和网站都是用C#写的。

我为 Web 客户端连接启用了 wcf 跟踪。 我通过这个 link 分享这个文件:wcf-log 在 Microsoft Service Trace Viewer 中打开标签页 Activity 时,最后一条消息包含错误。

The client and server cannot communicate, because they do not possess a common algorithm

经过大量研究,最终确定为 TLS 1.2 一旦禁用它,一切都会像魅力一样工作。

我们在哪里进行的其他测试 在 .net 3.5 中创建一个项目并在 .net 4.0 中创建一个精确的副本 结果是 .net 3.5 工作得很好,而 .net 4.0 像上面描述的那样失败了。

通过最后的测试,我们再次搜索了网络,发现了一个 link 也许可以帮助我们。 WCF .NET 4.0 doesn't work without TLS 1.0

该工具向我们显示我们已启用所有功能,但通过读取 post 我们发现我们可能遇到另一个问题,因为我们还在这台机器上安装了 sql server 2014。 我真的希望如果有人遇到这个问题,他会发现这个 post。这让我们忙了三天。