CRM 在线插件无法像调试时那样执行
CRM online plugin fails to execute the same way as when debugged
我刚刚完成了在线 crm 的插件编写,现在 运行遇到了一个奇怪的问题。
当我通过调试器 运行 插件时,我得到了预期的结果,但是当我让插件 运行 自行运行时,它无法按预期 运行。
在这个插件中,我正在监听新 queueitems 的创建事件,我正在检查 queueitm 是否是一封电子邮件。到目前为止,一切都如预期的那样 运行ning,但是当收到一封电子邮件后,我检查电子邮件是否有附件,这是事情开始偏离的时候。通过调试器我可以看到附件文件,但插件本身找不到附件。这对我来说很奇怪,因为我可以在队列中看到电子邮件并且那里肯定有附件。
什么会导致这种情况发生,为什么会发生,这是一个常见问题吗?
有点猜测。
存在计时问题,当您调试时该计时问题并不明显,因为您人为地减慢了应用程序的速度。
我猜你的插件是同步的,事情是这样发生的。
执行中
- 已创建电子邮件。
- 线程开始向电子邮件添加附件。
- 您的插件运行,但未找到附件。
- 线程添加附件并完成。
调试中
- 已创建电子邮件。
- 线程开始向电子邮件添加附件。
- 您的插件运行,并进入断点。
- 线程添加附件并完成。
- 您检查 属性 并找到附件。
鉴于电子邮件和电子邮件附件是单独的数据库表,这似乎是个好消息,CRM 可能会分别进行这两个创建调用。
检验这个理论的方法
- 让你的插件异步。
- 在您的代码中添加一个
Thread.Sleep
(不要超过 2 分钟,一分钟应该没问题)。
- 寻找另一个地方或步骤来注册您的插件。
- 在创建电子邮件附件时添加一个插件,它会抛出异常以查看事情发生的顺序。
如果我的理论被证明是正确的,最好的解决办法可能是找到另一种方式来注册您的插件。
我刚刚完成了在线 crm 的插件编写,现在 运行遇到了一个奇怪的问题。
当我通过调试器 运行 插件时,我得到了预期的结果,但是当我让插件 运行 自行运行时,它无法按预期 运行。
在这个插件中,我正在监听新 queueitems 的创建事件,我正在检查 queueitm 是否是一封电子邮件。到目前为止,一切都如预期的那样 运行ning,但是当收到一封电子邮件后,我检查电子邮件是否有附件,这是事情开始偏离的时候。通过调试器我可以看到附件文件,但插件本身找不到附件。这对我来说很奇怪,因为我可以在队列中看到电子邮件并且那里肯定有附件。
什么会导致这种情况发生,为什么会发生,这是一个常见问题吗?
有点猜测。
存在计时问题,当您调试时该计时问题并不明显,因为您人为地减慢了应用程序的速度。
我猜你的插件是同步的,事情是这样发生的。
执行中
- 已创建电子邮件。
- 线程开始向电子邮件添加附件。
- 您的插件运行,但未找到附件。
- 线程添加附件并完成。
调试中
- 已创建电子邮件。
- 线程开始向电子邮件添加附件。
- 您的插件运行,并进入断点。
- 线程添加附件并完成。
- 您检查 属性 并找到附件。
鉴于电子邮件和电子邮件附件是单独的数据库表,这似乎是个好消息,CRM 可能会分别进行这两个创建调用。
检验这个理论的方法
- 让你的插件异步。
- 在您的代码中添加一个
Thread.Sleep
(不要超过 2 分钟,一分钟应该没问题)。 - 寻找另一个地方或步骤来注册您的插件。
- 在创建电子邮件附件时添加一个插件,它会抛出异常以查看事情发生的顺序。
如果我的理论被证明是正确的,最好的解决办法可能是找到另一种方式来注册您的插件。