繁体   English   中英

CRM 2013-插件执行(后期操作)什么时候发生?

[英]CRM 2013 - Plugin Execution (Post Operation) What happens and when?

我有一个系统配置实体,在其中存储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. 有什么办法可以做得更好?

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

localContext.OrganizationService.Update(SystemConfiguration);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM