【发布时间】:2014-10-26 19:08:36
【问题描述】:
我有一个系统配置实体,用于存储 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 属性上进行过滤。
问题
- 为什么需要调用
localContext.OrganizationService.Update(SystemConfiguration);?是不是因为我的插件在更改提交到数据库后才执行? - 我可以将步骤修改为更新消息上的 Pre Operation 吗?我试过这个,但我的插件从来没有触发过?为什么没有触发?
- 我有什么办法可以做得更好吗?
【问题讨论】:
标签: c# dynamics-crm-2011 dynamics-crm dynamics-crm-2013 dynamics-crm-online