0

我为 CRM 2011 构建了一个自定义插件。基本上,相同的插件已部署在两个不同的环境中:测试和专业。这些环境显然是双胞胎。相同的实体,相同的配置等。

该插件在更新特定布尔字段时触发。在真实值上,触发并将联系人添加到列表中。因此,使用相同的逻辑,在设置为 false 的相同字段上,触发并从列表中删除联系人。现在,在“测试环境”上,它会在两种情况下触发。但是在“专业环境”上,当布尔字段设置为 false 时,它​​不会触发!

我放弃任何关于逻辑错误实现的假设。因为它在第一个环境中运行良好。上面,在这种情况下它不写任何日志。这让我更加确信它根本不会触发。

有谁知道,可能是什么问题?

4

1 回答 1

0

首先,绝对确定你的理论是正确的。在插件顶部抛出异常,看看是否在 CRM 中同时出现 True/False 异常弹出窗口。如果你这样做了,那么插件在 True/False 更新时触发,并且你的代码有问题 - 我无法想象它是什么,因为它在 dev 中工作,但至少你已经证明它不是t CRM 插件基础设施的故障。

如果您没有收到 False 场景的弹出异常,唯一可能的答案是 CRM 的插件基础架构不认为应该更新该字段。当更新为 False 后屏幕刷新时,该字段是否仍显示 False 还是返回 True?可以通过从传递到 Pre-Operation 插件的实体的字段列表中删除字段更新来“取消”字段更新 - 是否可能有其他插件在此之前执行并可能取消该字段更新?

我能想到的最后一件事:你说的是更新,但你是说创建吗?如果该布尔字段的默认值在 Prod 中设置为 False,但在 Dev 中未设置为 False,则当您创建实体时,如果该字段设置为 False,则该字段将不会包含在字段更新列表中(因此不会触发您的插件),因为系统已经知道在 Create 上使用的默认值是 False。

于 2013-04-05T20:53:11.800 回答