使用代码库/探测路径在不同路径上组装Workflow Foundation 4

我们有一个使用WF4工作流服务实现的长时间运行的工作流。 我们目前有一个问题,即在部署新版本的工作流时,现有的持久实例不会被加载。 我看到了如何管理Workflow Foundation中的版本? (然后导致http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx?ocid=aff-n-we-loc--DEV40909&WT.mc_id= aff-n-we-loc - DEV40909)使用app.config中的代码库href提示管理不同的版本。

这适用于没有任何自定义代码活动的简单工作流程 - 我在IIS 7应用程序中部署了XAMLX,创建了一个子目录(bin / v1)并将DLL放在那里,并指定探针路径如下:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="v1" />
        <probing privatePath="bin/v1" /> <!-- one of these is probably redundant... -->
    </assemblyBinding>
</runtime>

但是,当我添加自定义代码活动时,XAMLX似乎对程序集有如下引用(我已经从中排除了标准程序集):

<WorkflowService mc:Ignorable="sap sads" ConfigurationName="Service1"
sap:VirtualizedContainerService.HintSize="307,436" Name="Service1"
mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/servicemodel"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
...
xmlns:p1="http://schemas.microsoft.com/netfx/2009/xaml/activities"
**xmlns:p2="clr-namespace:PromotionWorkflowV1;assembly=PromotionWorkflowV1"**
xmlns:s="clr-namespace:System;assembly=mscorlib"
...
>

当我尝试在浏览器中导航到WF服务时,出现如下解析器错误:

Cannot create unknown type '{clr-namespace:PromotionWorkflowV1;assembly=PromotionWorkflowV1}SubmitActivity'.' Line number '42' and line position '6'.

我假设这是因为WF在解析XAMLX时没有看到探测路径? 是否还有其他事情可以做,这样我可以在这种情况下实现版本控制?

谢谢,-Srinivas


@我会做一个iisreset,并且能够捕获这个绑定。 谢谢!

我重新看了fuslogvw日志,结果发现问题是我指定探测路径的方式。 下列:

<probing privatePath="v2" />
<probing privatePath="bin/v2" />

只尊重第一条道路,而不是第二条道路。 第一个没有成功,因为这被认为是从网络应用程序的根源,第二个没有看。

当我删除第一条路径时,绑定成功。 每个MSDN文档指定多个路径的另一个选项是:

<probing privatePath="v2;bin/v2" />

我还发现,在“;”之后留有空间 也不起作用,因为空间也在路径中使用,所以这变成了“D:/ myDir / bin / v2”)。

一个观察是XAMLX文件只有程序集名称,而不是版本。 我手动编辑它以指定版本号,并且现在这个选择正确的DLL版本。

谢谢你的帮助! (另外提醒不要推测,并且仔细阅读文档。:-))

链接地址: http://www.djcxy.com/p/95855.html

上一篇: Workflow Foundation 4 assembly in different path using codebase / probing path

下一篇: Exposing Multiple Service Receives using Pick activity