Startup 什么处理动态URL?
我正在尝试创建自己的自定义深入功能,其中URLStartup 什么处理动态URL?,startup,axapta,x++,dynamics-ax-2009,Startup,Axapta,X++,Dynamics Ax 2009,我正在尝试创建自己的自定义深入功能,其中URLdynamics://0?myfunction\u 123456将启动我自己的代码 在C\SysStartupCmd\construct中,此基本代码: case 'viewalert': sysStartupCmd = new SysStartUpCmdViewAlert(s,parm); break; case 'drilldown': sysStartupCmd = new Sys
dynamics://0?myfunction\u 123456
将启动我自己的代码
在C\SysStartupCmd\construct
中,此基本代码:
case 'viewalert':
sysStartupCmd = new SysStartUpCmdViewAlert(s,parm);
break;
case 'drilldown':
sysStartupCmd = new SysStartUpCmdDrillDown(s,parm);
break;
case 'viewalertrule':
sysStartupCmd = new SysStartUpCmdViewAlertRule(s,parm);
break;
我已经测试过,所有这些都会被以下URL解雇:
- dynamics://0/?DrillDown_382576
- dynamics://0/?ViewAlert_382576
- dynamics://0/?ViewAlertRule_382576
case 'myFunction':
sysStartupCmd = new SysStartUpCmdDrillDown(s,parm);
break;
我已经在整个系统中搜索过了,无法找出是什么原因导致
dynamics://
URL仅在这三种情况下触发。有注册表项吗?我发现了C\EventDrillDownPoller
,它似乎创建了一个PipeServer来处理传入的内容?当然,每次我键入stackoverflow问题时,我都会找到自己的答案,但我认为这些信息非常有用
此堆栈问题C:\Program Files(x86)\Microsoft Dynamics AX\50\Client\Bin\AxHLink.exe%1
处理Dynamics://URL
这让我想到了另一个人正面临着与我类似的问题
因此,解决方案是:
- 使用C#或其他语言创建自定义URI处理程序以与AX()通信
- 嗨,jack,这三个例子中的一个用一些自定义的X++代码来处理现有的案例,试图从中解脱出来。可能通过更改URL中的向下搜索目标并以这种方式进行处理,或者在字符串中添加一些特殊字符
- 调用
,并使其成为可单击的链接“c:\Program Files(x86)\Microsoft Dynamics AX\50\Client\Bin\Ax32.exe”-startupcmd=myfunction\u myParams
start dynamics://TEST/?DrillDown_0?table=InventTable&field=itemId&value=03310511&company=XXX
它将承担合理的违约
start dynamics://TEST/?DrillDown_0?table=CustTable&value=113545
并且可以从HTML电子邮件调用AX,假设接收者有一个AX客户端
<a href="dynamics://TEST/?DrillDown_0?table=CustTable&value=113545">113545</a>
您可以在中找到我的定制。啊,太棒了。非常好的代码,节省了我很多时间!但是,代码中的一个问题是,当您挂接到定制的SysStartupCmd*时,您会去掉
TEST
的实际导航标记,在您的情况下,这可能会导致诸如SalesTable之类的变量更大的问题,或者如果有人使用您的代码执行或其他操作。超级有用!它可能应该测试test
是否与存储在参数中的值匹配(就像在正常的深入代码路径中一样)。Yup:)。我将parseDrillDownNavigationMark
中的代码移动到一个新的静态方法parseDrillDownCustomParam
,然后将parseDrillDownNavigationMark
中的代码切换回base,然后将分隔符行更改为int delimiter=strscan(parm',?',strlen parm,-strlen(parm))代码>(注意-
符号)。然后在C\SysStartUpCmdDrillDown\infoRun中,我刚刚将if(!EventDrillDownPoller::checkDrillDownNavigationMark(navigationMark))
移回自定义代码上方。很容易修复。我认为存在一个MS错误,它有时会导致drilldowntarget被剥离。同一个URL反复出现,有时会剥离深入目标。我拿不回来了。我猜是一个完整的系统编译和重新启动,或者有什么东西可以修复它。@TinavanderVyver-您是正确的,在AX12中,第二部分必须是整数,但向下搜索的目标不一定是整数。在url动态中有两件事是动态的://[Drilldown target]/?Drilldown.[Integer]
<代码>[向下搜索目标]
与SysAdmin>Setup>SystemParameters,Alerts,Drill-down target
中的配置相匹配。因此,在该设置中,您可能需要将TEST
放在那里,但您可以自定义\Classes\EventDrillDownPoller\parseDrillDownNavigationMark
,然后将URL更改为dynamics://TEST_mytext/?DrillDown_12345
并解析目标,不是整数。当然你解决了自己的问题,这是一种多么棒的调试方式!