WF4.5 不编译并行 C# 工作流程

2023-12-09

我有一个 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(使用前将#替换为@)

WF4.5 不编译并行 C# 工作流程 的相关文章

随机推荐