几天来,我一直在尝试让 BizTalk 业务流程连接到外部axis2 Web 服务,但遇到了各种问题。
我采取的步骤是:
- 为服务生成的架构添加生成的项目 -> 使用 WCF 服务引发了一个空异常,因此我不得不使用 .NET 2.0添加 Web 引用来生成 xsd 和 odx。
- 手动创建简单的消息模式正如这里所问的,我为未自动生成的简单请求和响应消息创建了模式。
- 设置端口我试过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 信封内?
- 手动添加响应模式。如果这不正确,我如何部署 Web 消息类型?
- 那些意外的字符 - 我尝试了 Fiddler 的 AutoResponder 功能,删除了字符,但我得到了一个 IO 异常(连接关闭)
- 其他...?