BizTalk - 0参数Web消息未在请求中发送

时间:2014-03-27 12:16:28

标签: xml soap biztalk biztalk-2013

我连接到SOAP 1.1 Web服务,不接受任何参数并返回简单的字符串响应。

我使用旧的.NET 2.0 添加Web引用为复杂类型生成了我的xsd文件,它还在Reference.odx中生成了端口和多部分消息类型

在我的业务流程中,我使用 Web消息类型下的正确多部分消息作为我的请求和响应消息的类型,并使用空的构造消息形状在发送操作之前请求消息。

尽管显式构造了没有参数的请求消息,但我可以看到(在Fiddler中)对服务的请求是正确构建的,但请求没有正文。我期待

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:myns="http:myns">
        <soap:Body>
            <myns:ServiceName/>
        </soap:Body>
    </soap:Envelope>

端口和适配器设置正确,因为我可以手动插入具有名为node的自关闭请求的预期请求主体,并重播失败的请求,然后成功。

我可以想到可能出错的两个地方:

  1. 在业务流程中构建消息
  2. 我的端口适配器可能忽略空消息,而不包括请求正文中的SOAP信封
  3. 即使正文是空的,我如何强制SOAP信封出现?

1 个答案:

答案 0 :(得分:0)

我的问题是直接在我的业务流程中使用自动生成的网络消息引起的。我解决了#39;我的问题:

  1. 使用.NET 2.0添加Web引用来保存服务的wsdl generate xsd
  2. 使用添加生成的项目..&gt;使用wsdl和xsd选项并选择1
  3. 中生成的文件来使用WCF服务
  4. 手动更改生成的文件以删除一些重复的复杂类型和无效的导入
  5. 更改odx,将消息类型的修饰符更改为public(来自内部)
  6. 从我的BizTalk项目中排除Web引用以避免重复
  7. 然后我可以在我的业务流程中使用生成的多部分消息。关键的是,没有参数的服务消息被定义了一个消息部分,我可以使用消息分配形状来硬编码没有内容的消息部分。

    我还获得了一些其他方面的好处,例如异常类型。