Delphi Datasnap客户端代码未获得未授权的异常

我正在使用Delphi 10.1 Berlin Update 2 Enterprise和DataSnap客户端/服务器REST框架。

如果我在未经调试的情况下运行应用程序并调用用户无权调用的方法,则代码无任何例外地运行,并且该方法返回空响应。

在客户端调用一个DataSnap服务器方法的交互式调用时,出现两个关于“未授权”的弹出式例外。

第一个气泡上升,被第二个取代。

第二个异常被“吃掉”,会话/连接简单地关闭,然后该方法返回一个空白结果(例如,如果返回类型是整型,则为零,而对于字符串返回类型则为空字符串)。

这发生在Datasnap.DSClientRest单元的ExecuteRequest方法结束附近的代码的以下部分:

except
  on E: TDSRestProtocolException do
    LSessionExpired;
end;

为什么这些异常(例如TDSRestProtocolException)未达到我的代码?

我认为这对于更新2来说是新的,我记得在更新2之前看到这些异常冒泡到我的代码。

附加是一个框架示例(由Delphi向导生成的标准示例)演示了该问题 - 单击该按钮,您将得到“”而不是“4321”,因为用户未被授权 - 但没有运行时异常。

我是DataSnap的新手,请耐心等待:-)

预先感谢有帮助的回复=)


这是由于将DSAuthenticationManager1组件添加到服务器的webmodule并且客户端无法进行身份验证。

请仔细检查如何使用身份验证添加身份验证和授权


好吧,我不确定,但在创建服务器方法的实例之前,尝试向DSRestConnection1组件提供用户名和密码

procedure TClientModule1.TestCon(aUsername, aPassword: string);
var
lServerMethodsClient : TServerMethodsClient;
begin
DSRestConnection1.UserName := aUsername;
DSRestConnection1.Password := aPassword;
lServerMethodsClient:=TServerMethodsClient.Create(DSRestConnection1);
end;

并尝试从你的clientform调用这个functn

procedure TF_ClientForm.Button1Click(Sender: TObject);
begin
ClientModule1.TestCon(EdtUsername.Text, EdtPassword.Text);
end;
链接地址: http://www.djcxy.com/p/64689.html

上一篇: Delphi Datasnap client code not getting unauthorized exception

下一篇: How to connect DataSnap client to DataSnap server via proxy server?