CRM 2013-插件执行(后期操作)发生了什么以及何时发生

本文关键字:什么 发生了 何时发 操作 插件 2013- 执行 CRM | 更新日期: 2023-09-27 18:20:31

我有一个系统配置实体,用于存储Web服务的凭据。我需要加密密码字段(new_SharePointServicePassword),我希望我的插件进行加密。

因此,我创建了一个新程序集,注册了以下事件。

base.RegisteredEvents.Add(new Tuple<int, string, string, Action<LocalPluginContext>>(40, "Create", "new_systemconfiguration", new Action<LocalPluginContext>(ExecutePostSystemConfigurationCreate)));
base.RegisteredEvents.Add(new Tuple<int, string, string, Action<LocalPluginContext>>(40, "Update", "new_systemconfiguration", new Action<LocalPluginContext>(ExecutePostSystemConfigurationCreate)));

我的插件代码如下。

string plainTextPassword = SystemConfiguration.new_SharePointServicePassword;
string encryptedPassword;
this.TracingService.Trace("Generating Keys");
Encryption encryption = new Encryption(localContext.PluginExecutionContext.OrganizationId.ToString());
this.TracingService.Trace("Generating Keys - Completed");
if (!string.IsNullOrEmpty(plainTextPassword))
{
    this.TracingService.Trace("Encrypting password");
    encryptedPassword = encryption.Encrypt(plainTextPassword);
    this.TracingService.Trace("Encrypting password - Completed");
    SystemConfiguration.new_SharePointServicePassword = encryptedPassword;
    localContext.OrganizationService.Update(SystemConfiguration);
}

针对插件注册的步骤用于创建和更新消息的后期操作。更新消息在new_SharePointServicePassword属性上进行筛选。

问题

  1. 为什么需要呼叫localContext.OrganizationService.Update(SystemConfiguration);?是因为,我的插件在更改提交到数据库后执行吗
  2. 我可以在更新消息中将步骤修改为预操作吗?我试过这个,但我的插件从未启动?为什么它没有着火
  3. 有什么办法可以让我做得更好吗

CRM 2013-插件执行(后期操作)发生了什么以及何时发生

我建议您在Pre Operation上运行该插件。因为当你通过UI输入密码时,它会先保存未加密的密码。用户必须刷新才能查看加密。此外,如果您在密码字段上启用了审核。它将在审核日志中显示未加密的密码。在Pre Operation上,您不需要以下行:

localContext.OrganizationService.Update(SystemConfiguration);

确保将代码中的40替换为20