问题
不同应用程序池中我的2个工作流服务的WCF请求未由其各自的工作进程处理。相反,两个工作进程都在处理两个Workflow Services的WCF请求。此问题仅发生在“集成”管理管道模式中,而不是“经典”管理管道模式。
设置
描述
我们只是说,例如,我在 UserA 和下运行的工作流服务A( WFSA )和B( WFSB ) UserB 分别。他们都希望通过工作流中的Receive活动来调用WCF。
当我启动2个应用程序池时,我可以看到2个w3wp.exe工作进程正在运行,一个作为 UserA ,另一个作为 UserB 。我希望 UserA 的w3wp.exe工作进程应该处理 WFSA 的WCF请求, UserB 的w3wp.exe工作进程应该处理WCF请求对于 WFSB 。
但是,当我开始向工作流发送WCF消息时,我可以通过跟踪日志文件看到两个w3wp.exe进程正在处理两个Workflow Services的请求。
例如, UserA AND UserB 的w3wp.exe工作进程正在处理 WFSA 的WCF消息。因此,如果我向 WFSA 发送10条WCF消息,则w3wp.exe将为 UserA 处理4条消息,而w3wp.exe将为 UserB <处理6条消息/ em>的
当我将应用程序池切换到“经典”托管管道模式时,WCF消息将按预期路由到相应的工作进程。
是否有一些我缺少的配置?
非常感谢任何帮助。
更新
在我正在开发的项目中, WFSA , WFSB ,另一个WCF服务应用程序( WCFApp )在以下配置:
WFSA &lt; ==&gt; WFSB &lt; ==&gt; WCFApp
我们在以下情况中看到问题:
请求的资源已移至以下位置之一: http://server/AppFolder/WFSB.xamlx/INotifyWhenDone
我可以通过设置来解决这个问题:
<workflowIdle timeToUnload="00:00:00" />
这意味着工作流将在空闲时立即保留,并且可以处理发送到错误的工作进程的消息,因为它可以在持久性数据库中找到工作流实例。但是,这种解决方案是不可接受的,因为持久性非常缓慢。
答案 0 :(得分:1)
AppFabric有一些热门修补程序,其中一个似乎与您遇到的问题有关。寻找here链接。
答案 1 :(得分:0)
我感觉这两种服务都在注册与IIS相同的“标识符”,虽然这是我无法告诉你的(可能是关联ID?)。因此,消息被路由到两个服务。我也感觉在集成管道中只有一个优化的服务管道和多个服务注册它(这是导致我之前的观点)。