2012-11-12 55 views
1

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

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

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

我已经使用下列步骤来在我的工作流程添加服务:

  1. 添加服务引用
  2. 提供的WSDL(操作显示在操作框中按预期)
  3. 单击确定
  4. 构建解决方案以确保服务显示在我的工具箱中
  5. 从工具箱拖动服务到工作流

然而,当我看到在工作流程中的服务的属性,是没有办法来指定输入参数或在哪里存储的调用的结果服务。

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

这里是一个屏幕截图,展示在工作流程中的服务的属性:

enter image description here

我的问题,因此是:

是否有可能在所有通过指定字符串使用SOAP服务作为输入参数(就像是要使用它),并将结果赋值给工作流变量?

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

回答

1

我猜你在这里使用ASMX风格的Web服务而不是WCF服务。

如果是这样,添加服务引用的作品,但不能完成最佳的事情。您应该能够通过将Body设置为new ReverseRequestBody()并将输入字符串指定为正文的一部分来使其工作。与输出ReverseResponseBody的方式相同,因为它将包含结果字符串作为响应主体的一部分。