获得SecurityNegotiationException的Windows 10 C#客户端应用程序

时间:2017-09-06 19:19:23

标签: c#

我有一个Windows 10 C#应用程序,它与Windows Server 2016上托管的Web服务进行联系。客户端应用程序设置在一个计时器上,该计时器每2分钟调用一次服务器。它使用来自智能卡的客户端证书来建立相互身份验证。

每次都与Web服务的初始连接有效。以下每个连接都失败。如果我重新启动应用程序,我可以第一次连接,然后所有后续连接都会失败。它是一个基本的hello world Web服务和一个简单的窗体,可以调用它。

我得到的例外是“无法为具有权限的SSL / TLS建立安全通道”

这就是奇怪的地方。如果我将计时器更改为30秒,则每次都有效。

如果我打开System.Net跟踪,它每次使用2分钟计时器都会有效。

请帮助!

编辑: 我将System.Net.ServicePointManager.MaxServicePointIdleTime设置在我的计时器之上。这解决了我们的hello world测试应用程序的问题,但不适用于我们的生产应用程序。

编辑: 我能够在生产应用程序中使用此超时。在我们的生产应用程序中,它仍然设置为Web服务。将其转换为服务引用设置后,此超时一直正常。为什么是这样?这是ServicePointManager中的错误吗?这似乎仍然不是一个可以接受的解决方案。

1 个答案:

答案 0 :(得分:0)

CRL或CSP检索可能会超时。检索发生在https://msdn.microsoft.com/en-us/library/windows/desktop/aa380269(v=vs.85).aspx。使用CryptoAPI调试来确认这一点 - http://unmitigatedrisk.com/?p=297

相关问题