我有一个使用PC1和zlib过滤德尔福XE - 的DataSnap过滤问题
在客户端这两个过滤器在的DataSnap设为TSQLConnection
定义的TCP/IP的DataSnap -xe服务器当客户端连接到服务器,我收到了“连接关闭优雅地”错误信息
如果我只用它自己的PC1过滤器 - 是没有问题的
如果我只使用zlib的网络连接过滤器本身 - 没有问题
有关如何让两个过滤器同时工作的任何想法?
我有一个使用PC1和zlib过滤德尔福XE - 的DataSnap过滤问题
在客户端这两个过滤器在的DataSnap设为TSQLConnection
定义的TCP/IP的DataSnap -xe服务器当客户端连接到服务器,我收到了“连接关闭优雅地”错误信息
如果我只用它自己的PC1过滤器 - 是没有问题的
如果我只使用zlib的网络连接过滤器本身 - 没有问题
有关如何让两个过滤器同时工作的任何想法?
您需要在您的客户端应用程序中部署libeay32.dll和ssleay32.dll。
从我的德尔福XE的DataSnap开发课件手动引述:
“如果你部署了DataSnap独立的服务器,使用TCP/IP和RSA和PC1过滤器,则还必须部署两个印特定SSL DLL文件: libeay32.dll和ssleay32.dll - 或者确保它们已经存在于服务器机器上,这些DLL是RSA过滤器(它加密了PC1过滤器使用的密码)所需要的,如果没有这两个DLL,任何想要连接的客户端到服务器将得到“Connection Closed Gracefully”消息,因为服务器无法加载两个DLL来启动RSA过滤器来加密PC1密钥等。
顺便说一下,无论是使用RSA和PC1过滤器连接到TCP/IP服务器,还是使用HTTPS连接到ISAPI过滤器,任何DataSnap客户端都需要相同的两个DLL。“
Groetjes,Bob Swart
这可能是DataSnap中的一个错误。我有完全相同的问题,这里是QC报告。 http://qc.embarcadero.com/wc/qcmain.aspx?d=91180
对QC报告进行投票修复并等待Delphi-XE的更新。
编辑1 一个疯狂的想法,不要在客户端指定过滤器。
这是来自Pawel Glowacki在运输过滤器上的一篇论文。 http://edn.embarcadero.com/article/41293 他特别提到你应该将ZLibCompression添加到客户端上的DataSnap驱动程序的Filters属性。
我已经测试过不这样做,它工作得很好。您必须将DBXCompressionFilter添加到uses子句,否则您会收到“ZLibCompression未注册”错误。
使用服务器上的PC1和ZLibCompression,并且客户端上没有筛选器,所有接缝都按预期工作。我已检查了流量,并对其进行了加密和压缩。
直到来自Embarcadero的人确认这是应该的方式,我才会在使用它之前考虑三次。
编辑2这里是由鲍勃·斯沃特Embarcadero公司讨论论坛一个帖子说,这是足够添加服务器上的过滤器。不Embarcadero公司直接,但非常接近:) https://forums.embarcadero.com/thread.jspa?threadID=48875&tstart=0
到从英巴卡迪诺有人证实,这是事情应该是这样我会三思而后我用它。
这是事实。如果您不在客户端指定过滤器,则会在连接期间在初始握手协议中告知服务器的过滤器,并自动添加它们。这是使用过滤器的完全合理和安全的方式。
但是,请注意,这是不正确的相反。服务器不采用来自连接客户端的过滤器。如果客户端上有一个RSA过滤器,但是服务器上没有匹配的过滤器,那么您将在连接时发生异常,并说服务器没有匹配的RSA过滤器。客户端上但不在服务器上的任何其他过滤器都将被忽略。
尝试颠倒过滤器的顺序,使客户端始终与服务器相反。 如
Server
Filters = <
item
FilterId = 'ZLibCompression'
Properties.Strings = (
'CompressMoreThan = 1024')
end
item
FilterId = 'PC1'
Properties.Strings = (
'Key = test')
end>
Client
Params.Add ('Filters = {"PC1": {"Key": "test"}, "ZLibCompression": {"CompressMoreThan": "1024"}}');
我已经把的libeay32.dll和ssleay32.dll在同一目录中clients.exe,但我仍然得到“关闭连接优雅地”的错误消息。有关服务器 – 2011-02-18 09:28:24
什么?是服务器也能够找到这两个DLL? – 2011-02-18 19:31:06
我刚刚偶然发现了这个讨论,但无论如何: “连接关闭良好”是一个“例外”,但不应该被视为“错误”。 Indy - DataSnap使用的TCP库使用该异常来表示连接已经被终止 - 意图。 这可能令人困惑,但这是Indy如何工作的方式。 – 2012-07-13 17:28:20