在Workflow服务中使用外部SOAP服务

时间:2012-11-12 16:58:40

标签: .net wcf soap workflow-foundation-4

我正在使用.NET 4框架并制作了WCF工作流服务应用程序。

我想使用我在另一个VS实例中运行的SOAP Web服务(.NET 3.5)。暴露的唯一方法如下:

[WebMethod]
public string Reverse(string input)
{
    char[] chars = input.ToCharArray();
    Array.Reverse(chars);
    return new string(chars);
}

我已使用以下步骤在我的工作流程中添加服务:

  1. 添加服务参考
  2. 提供WSDL(操作按预期显示在操作框中)
  3. 点击确定
  4. 构建解决方案以确保服务显示在我的工具箱中
  5. 将服务从工具箱拖到工作流程
  6. 但是,当我查看工作流中服务的属性时,无法指定输入参数或存储服务调用结果的位置。

    我只能选择指定一些模糊的参数,例如Body:InArgument<ReverseRequestBodyoutBody:OutArgument<ReverseResponseBody(其中没有一个是字符串)。

    以下是描述工作流中服务属性的屏幕截图:

    enter image description here

    因此我的问题是:

    是否可以通过将字符串指定为输入参数(就像要使用它一样)来使用SOAP服务,并将结果分配给工作流变量?

    换句话说,如何在上图中使bodyoutBody对应于Web服务的参数和返回值?

1 个答案:

答案 0 :(得分:1)

我猜您在这里使用ASMX样式的Web服务而不是WCF服务。

如果是这样,“添加服务参考”可以正常工作,但却无法做到最佳。您应该能够通过将Body设置为new ReverseRequestBody()并将输入字符串指定为正文的一部分来使事情变得有效。与输出ReverseResponseBody的方式相同,因为它将包含结果字符串作为响应主体的一部分。