1

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

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

是否有可能在 WF 中实现这一点,还是我们需要自定义解决方案?

4

1 回答 1

0

我不知道在任何WF/WCF 集成活动(SendActivityReceiveActivity)中处理 cookie 的任何内置工具。这是有道理的,因为 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

于 2009-01-09T13:17:32.957 回答