WF 中具有多个 SendActivity 活动的同一会话
Workflow Foundation 中的工作流过去使用 InvokeWebService 活动调用 ASMX Web 服务,该活动具有属性 SessionId 来关联同一会话中的多个活动(通过在每个请求上发送 ASP.NET 会话 cookie)。 有效。
现在,我们已切换到 WCF Web 服务接口,并且已更改工作流程以改用 SendActivity 活动。 然而,我们还没有找到任何解决方案来关联 Web 服务调用,即在每个请求上发送会话 cookie。
是否可以在 WF 中实现此目的,或者我们是否需要自定义解决方案?
Our workflow in Workflow Foundation used to call ASMX web services using the InvokeWebService activity, which has a property SessionId to correlate multiple activities in the same session (by sending the ASP.NET session cookie on every request). It worked.
Now we have switched to WCF web service interface, and we have changed our workflows to use the SendActivity activity instead. However, we haven't found any solution to correlate the web service invocations, i.e. sending the session cookie on every request.
Is it possible to achieve this in WF, or do we need a custom solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道 WF/WCF 集成 活动(SendActivity 和 ReceiveActivity)中有任何用于处理 cookie 的内置工具。 这是有道理的,因为 WCF 与传输无关,因此在较高级别上,API 无法耦合到任何特定于 HTTP 的功能,例如 ASMX Web 服务。
您的情况的解决方案可能是通过使用 basicHttpBinding 的端点公开 WCF 服务,该端点与 ASMX Web 服务支持的协议兼容,然后恢复使用 InvokeWebServiceActivity< /strong> 来调用它们。
此外,由于 WCF 服务可以通过任意数量的端点公开,因此您只需将使用 basicHttpBinding 的端点添加到已有的端点即可。 下面是一个示例:
然后,使用 InvokeWebServiceActivity 的工作流将使用以下 URL 调用该服务:
I am not aware of any built-in facility for handling cookies in any of the WF/WCF integration activities (SendActivity and ReceiveActivity). This makes sense since WCF is transport-agnostic, and therefore at a high level the APIs cannot be coupled to any HTTP-specific features like in the case of ASMX Web Services.
A solution in your case could be to expose the WCF services through an endpoint that uses the basicHttpBinding, which is compatible with the protocol supported by ASMX Web Services, and then revert to using the InvokeWebServiceActivity to invoke them.
Also, since a WCF service can be exposed through any number of endpoints, you can simply add an endpoint that uses the basicHttpBinding to the ones that are already there. Here is an example:
Then the workflows that use the InvokeWebServiceActivity would invoke the service using the following URL: