使用 HTTPAdapter 和 Receive.dll 会引发错误
Posted
技术标签:
【中文标题】使用 HTTPAdapter 和 Receive.dll 会引发错误【英文标题】:Using HTTPAdapter and Receive.dll throws error 【发布时间】:2021-11-17 15:36:42 【问题描述】:我正在使用 BizTalk 2020。我有一个 webapp,它调用一个通过 IIS 调用 BizTalk 的 webapi。运行请求时,我在 BizTalk 中收到错误:
执行接收管道失败:“Microsoft.BizTalk.DefaultPipelines.XMLReceive,Microsoft.BizTalk.DefaultPipelines,Version=3.0.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”来源:“XML 反汇编程序”接收端口:“HTTPREC” URI:“/BTHTTP/BtsHttpReceive.dll” 原因:按消息类型“http://schemas.microsoft.com/2003/10/Serialization/#string”查找文档规范失败。验证正确部署的架构。
我验证了我的架构,发现它们都已部署。我为我的消息使用了一个生成的实例。
<ns0:Select xmlns:ns0="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/MainData"> <ns0:Columns>LocationID,BulletinLevel,NotifyUponCompletion,SupervisorName,CrewMemberID,AircraftID</ns0:Columns>
<ns0:Query></ns0:Query>
</ns0:Select>
我验证了它。我查看了 BizTalk Hub,发现前一天的 SND 端口的可恢复消息。我打开消息,这是正文的内容:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><Select xmlns="05/TableOp/dbo/MainData"><Columns>LocationID,BulletinLevel,NotifyUponCompletion,SupervisorName,CrewMemberID,AircraftID</Columns></Select></string>
不确定为什么它将 xmlns 作为字符串添加到消息中。我已经重建和重新部署了几次,更新后重新启动了主机。我的端口正在使用 XMLReceive 和 XMLTransmit 管道。该进程收到一条消息,然后调用 SQL Server 以运行选择。
这是我的编排:
在运行请求之前,我是否需要将<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
添加到我的消息中?
我检查了 IIS、管道设置、ISAPI 模块设置和 asp.net 版本,一切看起来都正确。
更新 (12/08/2021) 创建了一个自定义管道,用于删除包装原始消息的元素。它处理,但我从 Receive.dll 收到 500 Internal Sever 错误。如果消息在管道中被修改,不确定为什么 Receive.dll 没有显示状态 200。
有什么建议吗?
【问题讨论】:
这是我从上一次运行中找到的消息正文 (SND PORT)问题在于它正在使用具有内部 Microsoft 命名空间的架构,并试图将其用于不应该用于的东西。将 SQL 响应映射到您使用自定义命名空间创建的架构,然后通过发送端口将其发送出去。
【讨论】:
以上是关于使用 HTTPAdapter 和 Receive.dll 会引发错误的主要内容,如果未能解决你的问题,请参考以下文章
从 HttpAdapter 获取会话到基于 Java 的适配器
IBM Worklight 与 HttpAdapter 的连接正在重置
STM32F0 USB CDC_Init_FS() 和 CDC_Receive_FS() 使用 CubeMX
使用 HAL_UART_Receive_IT() 和 HAL_UART_RxCpltCallback() 时会丢失字节吗?