Dynamics crm CRM online插件无法以与调试时相同的方式执行

Dynamics crm CRM online插件无法以与调试时相同的方式执行,dynamics-crm,dynamics-crm-online,Dynamics Crm,Dynamics Crm Online,我刚刚为crm online编写了一个插件,现在遇到了一个奇怪的问题 当我通过调试器运行插件时,我得到了预期的结果,但当我让插件自己运行时,它无法按预期运行 在这个插件中,我正在收听new queueitems的创建事件,并检查queueitm是否是电子邮件。到目前为止,一切都按预期运行,但是当收到一封电子邮件后,我会检查电子邮件是否有附件,这是事情开始偏离的时候。通过调试器我可以看到附件文件,但是插件本身找不到附件。这对我来说很奇怪,因为我可以看到队列中的电子邮件,那里肯定有附件 什么会导致这

我刚刚为crm online编写了一个插件,现在遇到了一个奇怪的问题

当我通过调试器运行插件时,我得到了预期的结果,但当我让插件自己运行时,它无法按预期运行

在这个插件中,我正在收听new queueitems的创建事件,并检查queueitm是否是电子邮件。到目前为止,一切都按预期运行,但是当收到一封电子邮件后,我会检查电子邮件是否有附件,这是事情开始偏离的时候。通过调试器我可以看到附件文件,但是插件本身找不到附件。这对我来说很奇怪,因为我可以看到队列中的电子邮件,那里肯定有附件

什么会导致这种情况发生,为什么会发生,这是一个常见的问题吗?

有点猜测

调试时会出现一个时间问题,而这个时间问题并不明显,因为您人为地降低了应用程序的速度

我猜你的插件是同步的,事情就是这样发生的

执行中

  • 电子邮件已创建
  • 线程开始向电子邮件添加附件
  • 您的插件正在运行,但找不到任何附件
  • 线程添加附件和完成
  • 正在调试中

  • 电子邮件已创建
  • 线程开始向电子邮件添加附件
  • 您的插件运行,并转到断点
  • 线程添加附件和完成
  • 您可以检查属性并找到附件
  • 考虑到电子邮件和电子邮件附件是独立的数据库表,这似乎是一个好消息,CRM可能正在分别进行这两个create调用

    检验这一理论的方法

  • 使你的插件异步
  • 在代码中添加
    线程。Sleep
    (不超过2分钟,一分钟就可以了)
  • 找到另一个地方或步骤来注册你的插件
  • 在电子邮件附件create上粘贴一个插件,该插件会抛出一个异常,以查看事件发生的顺序

  • 如果我的理论是正确的,那么最好的解决办法就是找到另一种方法来注册你的插件。

    还要明确说明你是如何注册插件的……同步/异步、阶段、沙盒还是非最初默认情况下,插件是同步注册到沙盒的@James Wood的回应让我走上了正确的道路。这正是问题所在,使插件的行为与调试器中的行为不同。切换到异步立即起到了帮助作用。