c# - Dynamics CRM 2011 SyncWorkflowExecutionPlugin 找不到程序集
问题描述
在我们的 Dynamics CRM 2011 服务器上突然出现一个奇怪的错误 - 当通过工作流程触发插件执行时,找不到特定的插件程序集,并出现错误:
[Microsoft.Crm.ObjectModel: Microsoft.Crm.ObjectModel.SyncWorkflowExecutionPlugin]
[324f29aa-6082-ea11-80ee-005056837add: ]
Starting sync workflow 'workflow name', Id: 2d4f29aa-6082-ea11-80ee-005056837add
Sync workflow 'workflow name' terminated with error 'The type initializer for '<Module>' threw an exception.'
异常堆栈跟踪最终导致:
Inner Exception: <CrtImplementationDetails>.ModuleLoadException: The C++ module failed to load while attempting to initialize the default appdomain.
at <CrtImplementationDetails>.ThrowModuleLoadException(String errorMessage, Exception innerException)
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
at .cctor()
Inner Exception: System.Runtime.Serialization.SerializationException: Unable to find assembly 'AssemblyName, Version=8.75.0.267, Culture=neutral, PublicKeyToken=4e4051c21cef725b'.
该程序集存在于服务器上,版本、文化和公钥令牌都匹配。奇怪的是,当通过创建/更新/等请求直接触发执行时,插件步骤工作正常 - 只有当通过工作流触发执行时才会发生错误。通过工作流触发,我并不是指从该程序集中运行代码活动,而是指如下情况:
- 实体已创建
- 来自 Assembly1 的 OnCreate 插件运行没有问题
- 运行更新相关实体的工作流,从 Assembly1 触发 OnUpdate 插件 - 错误
此问题最初是在服务器重新启动后出现的。再次重新启动暂时修复了它,直到两天后它再次开始发生。我们已经尝试了我们能想到的一切——更新程序集、注销/重新注册它、重新启动所有服务、再次重新启动服务器。有谁知道这可能是什么原因以及如何解决它?
解决方案
我们发现该问题是由在初始重启之前应用的 Windows 更新引起的,该更新在服务器上安装了 .NET Framework v4.8。尽管该应用程序仍在使用旧版本,但显然仅安装 v4.8 就足以导致错误。恢复到较早的 .NET 版本解决了该问题。
我不确定确切的技术原因是什么 - 似乎与应用程序域有关(https://docs.microsoft.com/en-us/dotnet/api/system.appdomain?view=netframework-4.8) . 但如果您遇到类似问题,请检查您的 .NET 框架版本。
推荐阅读
- javascript - 添加正则表达式后无法从输入中删除文本
- python - 使用 pandas 更新时比较 2 个数据框中的日期
- typeorm - TypeORM:如何在多对一关系中查找不匹配的记录?
- c - 为什么这种卡片分类方法不起作用?
- python - 在BeautifulSoup中抓取多个页面并在python中迭代过程
- vba - 访问 VBA 创建使用变体作为 where 条件的查询
- html - 角度数据表看起来太紧了
- amazon-web-services - 在 AWS 中运行计划/重复任务
- sql - 按日期和状态 SQL 分配金额
- javascript - 我正在尝试使用Vue制作扩展卡,问题是扩展卡时,右侧的卡会创建一个空白空间