SOAP 适配器的已知问题

本部分包含有助于避免错误的信息。

已知问题

SOAP 适配器性能不佳或在负载下生成错误

问题

SOAP 适配器性能不佳或在负载下生成错误

原因

出现此问题的原因是 SOAP 适配器的默认配置选项或影响 SOAP 适配器的依赖项组件未针对负载下的性能进行优化。

决议

若要解决此问题,请修改 SOAP 适配器的配置选项或 影响适配器性能的配置参数主题中所述的依赖项组件。

MIME/SMIME 编码器和解码器管道组件无法对 SOAP 适配器处理的数据进行编码和解码

问题

MIME/SMIME 编码器和解码器管道组件无法对 SOAP 适配器处理的数据进行编码和解码

原因

出现此问题的原因是 SOAP 适配器在进程的适配器阶段组装和反汇编 SOAP 消息。

决议

若要解决此问题,请使用安全套接字层(SSL)保护通信,以编码 SOAP 适配器处理的消息。 在发送端,使用 SOAP 适配器属性页中的 客户端证书指纹 属性来实现此目的。 在接收端,必须配置托管 BizTalk Web 服务的虚拟目录,以便进行 SSL 安全通信。

托管 SOAP 适配器的默认的 AppDomain 被卸载,导致主机进程挂起

问题

承载 SOAP 适配器的进程挂起,导致进程中的所有其他 Web 服务挂起。 这可能会导致以下错误:

执行响应(发送)管道时发生故障:“未知”来源:“未知”接收端口:TwoWayLatencyLoopBack_RxPort,URI:“/TwoWayLatencyRxSOAP/TwoWayLatencyWS.asmx”。原因:尝试访问已卸载的 AppDomain。

原因

SOAP 适配器在 IIS 进程空间中运行。 如果 IIS AppPool 中存在多个 Web 服务,则每个 Web 服务最终都有其自己的 AppDomain。

默认情况下,所有消息引擎对象都在第一个 AppDomain 中创建(即,对应于第一个 Web 服务的 AppDomain)。 如果第一个 Web 服务出于任何原因长时间处于非活动状态,IIS 将卸载第一个 AppDomain。 发生这种情况时,托管过程中的所有服务都变得不可用。

决议

若要防止卸载 AppDomain,请按照以下步骤进行:

  1. 依次单击“ 开始”、“ 所有程序”、“ Microsoft BizTalk Server ”,然后单击 “BizTalk Server 管理”。

  2. BizTalk Server 管理控制台中,展开 BizTalk Server 管理BizTalk 组平台设置,然后单击“ 主机”。

  3. 在主机列表中,右键单击所需的主机,然后单击“设置”。

  4. BizTalk 设置仪表板中,在“常规”选项卡下检查独立适配器的默认应用程序域

    执行此作时,BizTalk 消息引擎对象是在默认 AppDomain 中创建的,而不是在其自己的 AppDomain 中创建的。 由于默认 AppDomain 永远不会卸载,因此问题不再发生。

SOAP 适配器无法注册

问题

当 BizTalk Server 尝试注册 SOAP(或 HTTP)适配器时,可能会出现以下错误。

消息引擎未能注册适配器“SOAP”。 详细信息:“在同一进程中注册多个适配器类型不是受支持的方案。 例如,HTTP 和 SOAP 接收适配器不能在同一进程中共存”。

“消息引擎未能注册适配器”HTTP”。 详细信息:“在同一进程中注册多个适配器类型不是受支持的方案。 例如,HTTP 和 SOAP 接收适配器不能在同一进程中共存”。

原因

在 Windows Server 2003/IIS 6.x 上运行 BizTalk Server 时,SOAP 和 HTTP 适配器不能在同一进程空间或应用程序池中执行。

决议

如果安装要求在同一 Web 服务器上同时使用 SOAP 和 HTTP 适配器,则必须为每个适配器创建单独的应用程序池。 创建后,每个适配器的虚拟目录都分配给不同的应用程序池。

注释

由于在这些作系统下,SOAP 和 HTTP 适配器在 IIS 5.x 下的不同进程空间中运行,因此不会在 Windows XP 下出现此问题。 SOAP 适配器在 aspnet_wp.exe 进程中作为 ASP.Net 应用程序运行。 HTTP 适配器在 dllhost.exe的专用进程空间中运行。 因此,这两个适配器彼此隔离,允许它们同时在同一 Web 服务器上运行。

另请参阅

SOAP 适配器疑难解答