我有一個使用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