【发布时间】:2017-01-30 01:53:07
【问题描述】:
我正在使用 Delphi 10.1 Berlin Update 2 Enterprise 和 DataSnap 客户端/服务器 REST 框架。
如果我在未调试的情况下运行应用程序并调用用户无权调用的方法,则代码运行时没有任何异常,并且该方法返回空响应。
当交互式调试客户端调用 DataSnap 服务器方法时,我收到两个关于“未经授权”的弹出异常。
第一个冒泡并被第二个取代。
第二个异常被“吃掉”,会话/连接简单地关闭,然后该方法返回一个空白结果(例如,如果返回类型为整数,则返回零,返回类型为空字符串)。
这发生在 Datasnap.DSClientRest 单元中 ExecuteRequest 方法末尾附近的以下代码部分中:
except
on E: TDSRestProtocolException do
LSessionExpired;
end;
为什么这些异常(例如 TDSRestProtocolException)没有到达我的代码?
我觉得这对于 Update 2 来说是新的,我记得在 Update 2 之前看到这些异常出现在我的代码中。
Attached 是一个演示问题的框架示例(由 Delphi 向导生成的标准示例) - 单击按钮,您会得到“”而不是“4321”,因为用户未获得授权 - 但没有运行时异常。
我是 DataSnap 的新手,请耐心等待 :-)
在此先感谢您提供有用的回复 =)
【问题讨论】:
-
注意这是使用客户端 DataSnap REST 模块 (http),而不是简单的 TCP/IP 客户端 DataSnap 模块。
标签: delphi exception authorization datasnap