【发布时间】:2015-06-24 08:52:57
【问题描述】:
我正在尝试使用我的自定义应用程序而不是 PluginRegistrationTool 将包含 CRM 插件的新版本的插件程序集上传到 MS CRM Online 实例。
方法非常简单:
var plugin = new Entity("pluginassembly")
{
Id = PluginId // correct GUID of the plugin assembly stored in CRM
};
plugin["content"] = Convert.ToBase64String(ReadBinaryFile(filename));
Service.Update(plugin);
当我在本地使用 CRM 进行测试时,代码运行良好。但是,当我将Service 指向在线MS CRM 时,结果并不成功。
程序集已上传,但当我尝试执行分配给它的步骤时,CRM 触发 SecurityException:
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Security.SecurityException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #E824CF49Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>System.Security.SecurityException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #E824CF49</Message>
<Timestamp>2015-06-24T07:57:27.5491666Z</Timestamp>
<InnerFault i:nil="true" />
<TraceText>
</TraceText>
</OrganizationServiceFault>
我可以理解,CRM Online 可能会执行额外的检查。但我无法理解它究竟检查了什么以及为什么使用 PluginRegistrationTool 上传的程序集通过了这些检查,并直接上传 - 没有通过检查。
有没有人遇到过这样的问题?也许有人可以在没有逆向工程的情况下帮助回答PluginRegistrationTool?
提前感谢任何线索。
【问题讨论】:
-
查找错误代码 (0x80040216),它只是告诉我异常是“意外”。您是否能够在沙箱中注册相同的程序集?您是否在线安装了其他插件?
-
@HenkvanBoeijen 我刚刚尝试了同样的事情(在沙箱中的本地环境中注册插件并通过我的代码更新它)-结果与 CRM Online 相同-成功更新和意外的安全错误执行时。
-
你的插件是引用外部库还是有其他依赖?
SecurityException暗示插件中存在安全隐患结构。您可以在调用您的方法之前添加跟踪线。 JiT 编译器在编译第一次需要执行的方法时遇到安全异常。 -
@HenkvanBoeijen 有帮助!谢谢!我在下面的答案中写了详细的解释。再次感谢!
标签: c# dynamics-crm dynamics-crm-online