在WF中具有多个SendActivity活动的相同会话

时间:2009-01-08 15:58:36

标签: asp.net cookies workflow workflow-foundation

Workflow Foundation 中的工作流程用于使用 InvokeWebService 活动调用ASMX Web服务,该活动具有 SessionId 属性以关联多个活动同一个会话(通过在每个请求上发送 ASP.NET会话cookie )。它奏效了。

现在我们已切换到 WCF Web服务界面,我们已将工作流程更改为使用 SendActivity 活动。但是,我们没有找到任何关联Web服务调用的解决方案,即在每个请求上发送会话cookie。

是否可以在WF中实现这一目标,还是需要自定义解决方案?

1 个答案:

答案 0 :(得分:0)

我不知道在任何 WF / WCF集成活动中处理Cookie的任何内置工具( SendActivity ReceiveActivity )。这是有道理的,因为WCF与​​传输无关,因此在高级别上,API无法耦合到任何特定于HTTP的功能,例如 ASMX Web服务

您的案例中的解决方案可能是通过使用 basicHttpBinding 的端点公开WCF服务,该端点与ASMX Web服务支持的协议兼容,然后恢复使用 InvokeWebServiceActivity 以调用它们。

此外,由于可以通过任意数量的端点公开WCF服务,因此您只需将使用basicHttpBinding的端点添加到已存在的端点。这是一个例子:

<configuration>
    <system.serviceModel>
        <services>
            <service name="MyNamespace.MyServiceImpl">
                <endpoint binding="wsHttpBinding" name="WsHttp"
                    contract="MyNamespace.IMyService" />
                <endpoint address="basic" binding="basicHttpBinding" name="BasicHttp"
                    contract="MyNamespace.IMyService" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost/myservice" />
                    </baseAddresses>
                </host>
            </service>
        </services>
    </system.serviceModel>
</configuration>

然后,使用 InvokeWebServiceActivity 的工作流将使用以下URL调用服务:

  

http://localhost/myservice/basic