AX 2012 R2服务器端调试:自定义银行对账单逻辑断点失效求助
调试继承RunBaseBatch类的解决方案
检查SysOperation框架关联与执行模式
- 确认
BankStatementTransferController_SI已正确关联目标RunBaseBatch类:检查Controller的初始化逻辑,是否通过parmClassName()和parmMethodName()指定了RunBaseBatch类的全名称及主执行方法(如run),关联错误会导致框架无法调用到目标类。 - 强制同步执行:SysOperationController默认可能以异步批处理模式运行,即便RunOn设为
Called from,代码也会在服务器进程而非当前客户端进程执行,导致断点失效。在controller.startOperation()前添加以下代码强制同步:controller.parmExecutionMode(SysOperationExecutionMode::Synchronous);
调整断点与调试会话
- 确认断点位置:将断点设在RunBaseBatch类
run()方法的第一行可执行代码上,避免因条件断点、空逻辑或代码未被走到导致断点不触发。 - 附加到服务器进程调试:如果代码确实以批处理模式运行(即使RunOn为
Called from),需将Visual Studio调试器附加到AOS服务器进程:- AX 2012:找到
Ax32Serv.exe进程 - D365 Finance & Operations:找到对应实例的
w3wp.exe进程
附加完成后重新触发Controller执行,断点会在服务器进程中触发。
- AX 2012:找到
验证数据与调用流程
- 测试RunBaseBatch类独立执行:直接在AOT中运行该类的
main()方法,确认断点能否触发,排除Controller关联问题。 - 检查查询结果:如果
buildQuery()生成的查询无返回记录,SysOperation框架会直接跳过后续逻辑。在controller.buildQuery()后添加代码验证记录数:info(strFmt("查询记录数: %1", controller.queryRun().recordCount()));
内容的提问来源于stack exchange,提问作者DevGary
相关产品推荐
相关产品推荐

