我有一个 IIS 托管的 xamlx 工作流程,其中包含 c# 表达式,我试图在并行版本控制中运行。
我完全喜欢这篇文章:工作流服务的并行版本控制
工作流的新实例按预期工作,但是当我调用工作流的先前版本的实例时,它会引发错误,告诉我它尚未编译。
Error:
无法找到编译位置的 ICompiledExpressionRoot
'辅助数据'。确保活动的定义包含
该表达式已编译。
顺便说一句,我有一个编译工作流程的自定义工厂。
<serviceActivations>
<add service="Service1.xamlx" relativeAddress="~/Service1.xamlx" factory="MyServiceHostFactory" />
</serviceActivations>
在分析 .Net 的源代码后,我意识到我在自定义工作流工厂中重写的方法 CreateWorkflowServiceHost 在其返回对象中添加了所有支持的版本。
我所要做的就是迭代这个集合并编译它们。
最终源码:
protected override WorkflowServiceHost CreateWorkflowServiceHost(WorkflowService service, Uri[] baseAddresses)
{
var host = base.CreateWorkflowServiceHost(service, baseAddresses);
// add your customizations here…
CompileExpressions(service.Body);
foreach (var supportedVersion in host.SupportedVersions)
{
CompileExpressions(supportedVersion.Body);
}
return host;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)