【发布时间】:2014-03-25 11:59:05
【问题描述】:
几天来,我一直在尝试让 BizTalk 编排连接到外部 axis2 Web 服务,但遇到了各种问题。
我采取的步骤是:
- 为服务生成的架构添加生成的项目 -> 使用 WCF 服务抛出了一个空异常,所以我不得不使用 .NET 2.0 添加 Web 引用 生成 xsd 和 odx。
- 手动创建简单的消息架构正如here 所问,我为未自动生成的简单请求和响应消息创建了架构。
- 设置端口我试过WCF-Custom、WCF-BasicHttp和Http
尝试接收响应时,我总是收到以下消息:
Inner exception: Invalid envelope namespace
Exception type: SoapException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: System.Web.Services.Protocols.SoapException ReadSoapException(System.Xml.XmlReader)
The following is a stack trace that identifies the location where the exception occured
at Microsoft.BizTalk.ExceptionUtil.ReadSoapException(XmlReader reader)
at Microsoft.BizTalk.XLANGs.BTXEngine.SoapExceptionMsg.SoapExceptionFormatter.Deserialize(XLANGMessage msg, Stream stm)
at Microsoft.BizTalk.XLANGs.BTXEngine.SoapExceptionMsg.get_TheException()
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXLogicalPortBinding.VerifyMessage(Envelope env, String typeName, Context cxt, OperationInfo op)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.VerifyTransport(Envelope env, Int32 operationId, Context ctx)
服务抛出 SOAP 异常,但消息(通过浏览器和 Fiddler 测试)没有通过 SOAP 信封包装器返回。
另一个奇怪的是,在 Fiddler 中,消息正文中包含一些奇怪的字符。在大多数情况下:
70
{expected message}
0
我的问题是由于:
- 服务配置
- 我设置适配器的方式 - 我在哪里指定响应应该在 SOAP 信封内?
- 手动添加响应模式。如果这不正确,我该如何部署网络消息类型?
- 那些意外的字符 - 我尝试了 Fiddler 的 AutoResponder 功能并删除了字符,但我得到一个 IO 异常(连接关闭)
- 其他...?
【问题讨论】:
-
"不要用 SOAP 信封返回" 你是说它不是 SOAP 服务吗?如果端点没有返回 SOAP,则 BizTalk 中的任何内容都不会使其成为 SOAP。
-
@boatseller 不,虽然它们返回 SOAP 异常,但不是这样!正是 WCF 适配器期待 SOAP 信封并抱怨,因为没有
-
@boatseller 我不确定我的设置的哪一部分导致将此服务视为 SOAP
-
添加 Web 引用假定 SOAP。适配器实际上并不是特定于类型的。
-
我要做的第一件事是与axis2 团队确认这是否真的是一个SOAP 服务或其他东西。如果它不完全符合 SOAP,那么向导将无法帮助您。
标签: xml web-services biztalk biztalk-2013