【问题标题】:Workflow Service (WF4) in IIS7.5 Application Pool/Worker Process Mixing IssueIIS7.5 应用程序池/工作进程混合问题中的工作流服务 (WF4)
【发布时间】:2023-03-09 13:29:01
【问题描述】:

问题

我在不同应用程序池中的 2 个工作流服务的 WCF 请求没有被它们各自的工作进程处理。相反,两个工作进程都在处理两个工作流服务的 WCF 请求。此问题仅在“集成”托管管道模式下出现,而不在“经典”托管管道模式下出现。

设置

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

说明

比如说,我有工作流服务 A (WFSA) 和 B (WFSB) 在 UserA 下运行分别是用户B。他们都期望通过工作流中的 Receive 活动调用 WCF。

当我启动 2 个应用程序池时,我可以看到 2 个 w3wp.exe 工作进程正在运行,一个作为 UserA,另一个作为 UserB。我希望 UserA 的 w3wp.exe 工作进程应该处理 WFSA 的 WCF 请求,而 UserB 的 w3wp.exe 工作进程应该处理 WCF 请求对于WFSB

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

例如,WFSA 的 WCF 消息正在由 UserAUserB 的 w3wp.exe 工作进程处理。因此,如果我向 WFSA 发送 10 条 WCF 消息,其中 4 条将由 UserA 的 w3wp.exe 处理,而 6 条将由 UserB。

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

我缺少一些配置吗?

非常感谢任何帮助。

更新

在我正在进行的项目中,WFSAWFSB 和另一个 WCF 服务应用程序 (WCFApp) 在如下配置:

WFSA WFSB WCFApp

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

  • WFSA ==> WFSB (UserA):WFSAWFSB上实例化一个新的工作流>,在 w3wp.exe 上为 UserA 处理。
  • WFSB (UserA) ==> WCFAppWFSB 调用 WCFApp,它做一些处理。
  • WCFApp ==> WFSB (UserB!!!):处理完毕后,WCFApp通知WFSB 完成了。但是 WCF 消息由 UserB 的 w3wp.exe 进程处理!!!当然工作流实例在那里不存在,因此它会出错并显示以下消息:

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

我可以通过设置来解决这个问题:

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

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

【问题讨论】:

    标签: workflow-foundation-4 iis-7.5 workflowservice


    【解决方案1】:

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

    【讨论】:

    • 这看起来很有希望。我很快就会对此进行测试。
    • 应用以下修补程序后,问题就消失了。谢谢! support.microsoft.com/kb/983484
    • 我在使用 IIS Express 进行开发时遇到了这个问题。有什么建议吗?
    • AFAIK IIS Express 与 AppFabric 不兼容。
    • 这里有更多关于我的问题的详细信息:stackoverflow.com/questions/6308224/…
    【解决方案2】:

    我感觉这两个服务都在向 IIS 注册类似“标识符”的东西,尽管我无法告诉你这是什么(也许是相关 ID?)。因此,消息被路由到这两个服务。我还感觉到,在集成管道中,只有一个优化的服务管道和多个服务注册到它(这就是我之前观点的原因)。

    【讨论】:

    • 有趣的想法。即使相关 ID 相同,WCF 终结点 URI 也是不同的。消息不应该根据端点 URI 路由到正确的工作进程吗?如果你说的是真的,我觉得这是一个错误。
    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多