我正在连接到 SOAP 1.1 Web 服务,不接受任何参数并返回一个简单的字符串响应。
我已经使用旧的 .NET 2.0 为复杂类型生成了 xsd 文件添加网页参考它还在 Reference.odx 中生成了端口和多部分消息类型
在我的编排中,我在下面使用正确的多部分消息网络消息类型作为我的请求和响应消息的类型并使用空构造消息在发送操作之前请求消息的形状。
尽管显式构造了不带参数的请求消息,但我可以看到(在 Fiddler 中)对服务的请求已正确构建,但没有请求正文。我期待着
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:myns="http:myns">
<soap:Body>
<myns:ServiceName/>
</soap:Body>
</soap:Envelope>
端口和适配器设置正确,因为我可以手动插入具有名为节点的自关闭请求的预期请求正文,并重播失败的请求,然后该请求会成功。
我能想到两个可能出错的地方:
- 在 Orchestration 中构建消息
- 我的端口适配器可能会忽略空消息并且不在请求正文中包含 SOAP 信封
即使主体为空,如何强制 SOAP 信封存在?
我的问题是由于直接在编排中使用自动生成的网络消息引起的。我通过以下方式“解决”了我的问题:
- 使用 .NET 2.0 添加 Web 引用保存 wsdl 为服务生成 xsd
- 使用添加生成的项目.. > 使用 WCF 服务,使用 wsdl 和 xsd 选项并选择 1 中生成的文件
- 手动更改生成的文件以删除一些重复的复杂类型和无效的导入
- 更改 odx,将消息类型的修饰符更改为 public(从内部)
- 从我的 BizTalk 项目中排除 Web 引用以避免重复
然后,我可以在编排中使用生成的多部分消息。重要的是,不带参数的服务的消息是使用消息部分定义的,我可以使用消息分配形状对没有内容的消息部分进行硬编码。
我还获得了一些其他好处,例如异常类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)