我们有 WCF 服务,可以为不同的客户在多种协议(protocol)上运行。大多数工作正常,但当我们使用 SSL 时,连接需要很长时间才能关闭。打开一个连接没有问题,但是关闭很慢。
最奇怪的行为是关闭时间与连接上传输的数据量成正比。如果只有几个字节从服务器发送到客户端,连接几乎会立即关闭,但是返回数百行的搜索需要与原始搜索一样长的时间来关闭连接。关闭时间似乎与传输的数据量成正比。似乎在连接关闭之前将结果重新传输回服务器进行验证。
几乎从不抛出错误,但连接关闭时间实质上是执行调用所需时间的两倍。
基本设置如下: 自定义绑定(bind) 二进制编码 可靠 session ,Ordered=true 绑定(bind)元素是 HttpsTransportBindingElement 使用 RemoteCertificateValidationCallback
所有代理都是使用 ChannelFactory 以编程方式构建的。
最佳答案
我们发现问题出在 ReliableSession 上。 ReliableSession 尝试验证在下一个连接中发送的所有内容。这听起来是个好主意,但它本质上毫无值(value),因为即使我发现了一些无法验证的东西,现在做任何事情都为时已晚。
底线:ReliableSession 不是很可靠。
关于performance - 使用 SSL 的 WCF 连接关闭速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823938/