代码之家  ›  专栏  ›  技术社区  ›  Mas

IIS7.5应用程序池/工作进程混合问题中的工作流服务(WF4)

  •  2
  • Mas  · 技术社区  · 15 年前

    问题

    不同应用程序池中我的2个工作流服务的WCF请求未由其各自的工作进程处理。相反,两个工作进程都在处理两个工作流服务的WCF请求。此问题仅发生在“集成”管理管道模式下,而不是“经典”管理管道模式下。

    安装程序

    • 2个在IIS 7.5中运行的工作流服务(Workflow Foundation 4.0)。
    • 每个工作流服务都在IIS中设置为应用程序,并具有自己的应用程序池和自己的身份凭据。
    • 应用程序池以“集成”管理管道模式运行。

    说明

    比如说,我有一个工作流服务( WFSA公司 )和B( WFSB公司 )在下面跑 用户 用户B 分别是。他们都期望通过工作流中的接收活动进行WCF调用。

    当我启动2个应用程序池时,我可以看到2个w3wp.exe工作进程正在运行,其中一个为 用户 另一个是 用户B . 我希望w3wp.exe工作进程 用户 应处理的WCF请求 WFSA公司 ,和w3wp.exe工作进程 用户B 应处理的WCF请求 WFSB公司 .

    但是,当我开始向工作流发送WCF消息时,我可以通过跟踪日志文件看到两个w3wp.exe进程正在处理对两个工作流服务的请求。

    例如,WCF消息 WFSA公司 正在由w3wp.exe工作进程处理 用户 以及 用户B . 所以如果我给 WFSA公司 ,4将由w3wp.exe处理 用户 ,6将由w3wp.exe处理 用户B .

    当我将应用程序池切换到“经典”托管管道模式时,WCF消息将按预期路由到相应的工作进程。

    有没有我遗漏的配置?

    任何帮助都非常感谢。

    更新

    在我正在做的项目中, WFSA公司 , WFSB公司 ,和另一个WCF服务应用程序( WCFApp公司 )在以下配置中相互通信:

    WFSA公司 <==> WFSB公司 <==> WCFApp公司

    我们在以下场景中看到问题:

    • WFSA公司 ==> WFSB公司 ( 用户 ): WFSA公司 在上实例化新工作流 WFSB公司 ,它在w3wp.exe上处理 用户 .
    • WFSB公司 ( 用户 )==> WCFApp公司 : WFSB公司 打电话给 WCFApp公司 ,进行一些处理。
    • WCFApp公司 ==> WFSB公司 ( 用户B !!!):处理后, WCFApp公司 通知 WFSB公司 已经完成了。但是WCF消息由w3wp.exe进程处理 用户B !!! 当然,工作流实例不存在,因此它会用以下消息出错:

    请求的资源已移动到以下位置之一: http://server/AppFolder/WFSB.xamlx/INotifyWhenDone

    我可以通过设置:

    <workflowIdle timeToUnload="00:00:00" />
    

    这意味着当工作流空闲时,它将立即被持久化,并且可以处理发送到错误工作进程的消息,因为它可以在持久化数据库中找到工作流实例。然而,这个解决方案是不可接受的,因为持久性非常缓慢。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Maurice    15 年前

    AppFabric有几个热修复程序,其中一个似乎与您遇到的问题有关。寻找 here 对于链接。

        2
  •  0
  •   Preet Sangha    15 年前

    我感觉这两个服务都在向I is注册类似于同一个“标识符”的东西,尽管我无法告诉您这是什么(可能是相关Id?)。因此消息被路由到两个服务。我还感觉到,在集成管道中,只有一个优化的管道指向服务,并且有多个服务在其中注册(这就是我前面所说的)。

    推荐文章