【问题标题】:Delphi XE10.1 DataSnap Client Error "SetConnectTimeOut"Delphi XE10.1 DataSnap 客户端错误“SetConnectTimeOut”
【发布时间】:2016-05-19 12:53:22
【问题描述】:

我尝试将我的项目从 XE8 转移到 XE10.1

DataSnap 客户端模块有 SQLConnection1: TSQLConnection

当我将属性Driver.ConnectTimeout 设置为任何值,然后设置Connected=true,我得到错误:

“设置连接超时”

Driver.ConnectTimeout 中没有任何值,设置连接即可。

我的错误是什么?

【问题讨论】:

    标签: delphi datasnap


    【解决方案1】:

    你没有做错任何事。 Embarcadero 做到了。

    在 Delphi 10 Seattle(我没有 XE8)中,Data.DbxHTTPLayer.TDSHTTPNativeClient.SetConnectTimeout 方法的实现是:

    procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
    begin
      FHTTP.ConnectTimeout := AMilisec;
    end;
    

    在 Delphi 10.1 Berlin 中,同样的方法如下所示:

    procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
    begin
    
      raise ENotImplemented.Create('SetConnectTimeout');
    end;
    

    我将源 (Data.DbxHTTPLayer.pas) 编辑为:

    procedure TDSHTTPNativeClient.SetConnectTimeout(AMilisec: Integer);
    begin
      FHTTPClient.ConnectionTimeout := AMilisec;
      //raise ENotImplemented.Create('SetConnectTimeout');
    end;
    

    它解决了这个问题。最初的 .dcu 和 .o 最初阻止了更改实际链接到我的应用程序中,因此我将 Data.DbxHTTPLayer.pas 添加到我的项目中(这可能不是正确的方法)。

    【讨论】:

    • Embarcadero 为什么会做这样的事情?
    • 在 10 和 10.1 之间,他们更改了底层 HTTP 库。我的猜测是他们打算回到这个并忘记了。
    • 值得报告为质量门户问题。
    • 我在 10.1 更新 2 中遇到了这个问题。我在这里提交了错误报告:quality.embarcadero.com/browse/RSP-16587
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多