我们有针对不同客户的多种协议运行的WCF服务。大多数工作正常,但是当我们使用SSL时,连接需要很长时间才能完成。打开连接没问题,但关闭非常慢。
最奇怪的行为是,关闭时间与连接上传输的数据量成正比。如果从服务器向客户端发送几个字节,连接几乎会立即关闭,但返回几百行的搜索需要与原始搜索关闭连接所需的时间。关闭时间似乎与传输的数据量成正比。似乎在连接关闭之前,结果会重新传输回服务器进行验证。
几乎从不抛出错误,但连接关闭时间实际上是执行调用所需时间的两倍。
以下是基本设置: 自定义绑定 二进制编码 可靠的会话,Ordered = true 绑定元素是HttpsTransportBindingElement 使用RemoteCertificateValidationCallback
所有代理都是使用ChannelFactory以编程方式构建的。
答案 0 :(得分:1)
我们发现问题出在ReliableSession上。 ReliableSession尝试验证在下一个连接中发送的所有内容。这听起来是一个好主意,但它基本上没有价值,因为即使我发现了一些没有验证它的东西也为时已晚,无法做任何事情。
底线:ReliableSession不太可靠。
答案 1 :(得分:0)
理论上可能是它在代理关闭时写入日志,并且由于解密而获得额外的命中,或者它不会缓存https结果。