0

当我尝试为 datasnap 创建自定义传输过滤器并使用它时,当我运行客户端应用程序时,我收到一条错误消息:

模块 ProjectAdminClient.exe 中的异常 TDBXError。Filter Log Rejected 设置参数 FilterUnit 给定值 1024。此时,由于这种不兼容性,服务器通信是不可能的。

这是什么原因造成的?

4

2 回答 2

3

您是否使用过滤器参数?我还创建了自定义传输过滤器,但从未遇到此错误。这是一个无操作日志过滤器示例...

unit LogFilter;
interface
uses
  SysUtils, DBXPlatform, DBXTransport;

type
  TLogFilter = class(TTransportFilter)
  public
    constructor Create; override;
    destructor Destroy; override;
    function ProcessInput(const Data: TBytes): TBytes; override;
    function ProcessOutput(const Data: TBytes): TBytes; override;
    function Id: UnicodeString; override;
  end;

const
  LogFilterName = 'Log';

implementation
uses
  CodeSiteLogging;

constructor TLogFilter.Create;
begin
  inherited Create;
  CodeSite.Send(csmBlue,'TLogFilter.Create');
end;

destructor TLogFilter.Destroy;
begin
  CodeSite.Send(csmBlue,'TLogFilter.Destroy');
  inherited Destroy;
end;

function TLogFilter.ProcessInput(const Data: TBytes): TBytes;
begin
  Result := Data;
  CodeSite.Send(csmYellow, 'ProcessInput ' + IntToStr(Length(Data)),
    TEncoding.ASCII.GetString(Data));
end;

function TLogFilter.ProcessOutput(const Data: TBytes): TBytes;
begin
  Result := Data;
  CodeSite.Send(csmOrange, 'ProcessOutput ' + IntToStr(Length(Data)),
    TEncoding.ASCII.GetString(Data));
end;

function TLogFilter.Id: UnicodeString;
begin
  Result := LogFilterName;
end;

initialization
  TTransportFilterFactory.RegisterFilter(LogFilterName, TLogFilter);
finalization
  TTransportFilterFactory.UnregisterFilter(LogFilterName);
end.

这个对我来说很好用(我即将发布的 Delphi XE DataSnap Development Essentials 课件手册中的一个例子)。

Groetjes,鲍勃·斯沃特

于 2010-11-09T21:48:35.287 回答
0

当我使用他的 Delphi 2010 Datasnap 白皮书中的 Bob 博士的 LogFilter 遇到类似问题时,我发现了这个问题。

至少部分问题是我在尝试使用日志过滤器的同时加载了 ZLibCompression 过滤器。线索在 ServerContainerUnit1.dfm

Filters = <
  item
    FilterId = 'ZLibCompression'
    Properties.Strings = (
      'CompressMoreThan=1024')
  end>

我看到 1024 也在错误中,并认为没有 ZLib 过滤器值得尝试。我从客户端和服务器中删除了它。现在日志过滤器工作。我获取服务器时间并获取断点以在 LogFilter 代码中工作。

于 2011-02-08T21:35:25.033 回答