处理传入 MDN

AS2 接收管道 (AS2EDIReceive 和 AS2Receive) 基于作为 AS2 消息接收方的协议属性处理传入 MDN。 BizTalk Server 自动将 MDN 与传出 AS2 消息关联。

每个管道执行的步骤如下所示:

  • 通过将消息 AS2 标头中的 AS2-From 值与“协议属性”对话框单向 AS2 协议选项卡的“标识符”页中的 AS2-From 列表的值相匹配来确定发送方。 如果未找到匹配项,则管道将中止处理并引发异常。

  • 将下列 AS2 属性升级到上下文中:

    • IsAS2FailedMessage

    • DispositionType

    • GenerateAsynchronous200OKOnly

    • IsAS2MdnResponseMessage

    • IsAS2MessageSigned

    • OriginalMessageId

    • ReceivedContentMic

    • DispositionMode

    • MessageId

  • 将 InboundHttpHeaders 属性设置为消息的所有 HTTP 标头,并将其升级到消息的上下文中。

  • 创建 MDN 的副本(以传输格式)并将该副本存储在不可否认数据库(BizTalkDTADb 数据库的 EdiMessageContent 表)中(如果在单向 AS2 协议属性中启用了相应选项)。

  • 执行 MIME 处理,其中包括验证签名(如果对 MDN 进行了签名)。

  • 将 MDN 中的 MIC(消息完整性检查)与 AS2Send 管道在发送原始消息时所计算的数据存储区中的 MIC 进行比较(如果适用)。 有关详细信息,请参阅 MDN 消息

  • 在不可否认数据库中创建相关条目。

  • 删除 MDN,除非在 “协议属性” 对话框的单向 AS2 协议选项卡的 “发送方 MDN 设置” 页中设置了 “将入站 MDN 处理到 MessageBox 以用于路由/传递选项” 属性。

  • 如果在“协议属性”对话框的单向 AS2 协议选项卡的“发件人 MDN 设置”页中设置了“将入站 MDN 处理到 MessageBox 中以便路由/传递选项”属性,则接收管道通过 AS2 解码器以线路格式将 MDN 作为传递消息路由,并将其放入 MessageBox 中。 传输格式的 MDN 包含所有 HTTP 标头。

    注意

    可以设置发送端口以订阅已放入 MessageBox 中的收到的 MDN。 若要订阅收到的 MDN,请将发送端口筛选器设置为 IsAS2MdnResponseMessage==True

    注意

    如果使用 AS2EdiReceive 管道处理收到的 MDN,则无法在“协议属性”对话框的单向 AS2 协议选项卡的“发件人 MDN 设置”页中设置“将入站 MDN 处理到 MessageBox 中用于路由/传递选项”属性,从而将 MDN 路由到 MessageBox。 如果尝试进行此操作,将会导致一个 EDI 错误,因为 MDN 将传递至 EDI 解码器,而 EDI 解码器无法对 MDN 进行处理。 如果 MDN 不发送到 MessageBox,则 AS2Decoder 将使用该 MDN,因此不会将其传递到 EDI 解码器。

消息完整性检查

消息完整性检查 (MIC) 用于验证 MDN 与已发送的原始消息相关联。 AS2Send 发送管道在生成原始 AS2 消息时将计算来自消息负载的 MIC,并将该 MIC 存储在数据存储区中。 需要 MDN 时,原始消息的接收方将生成一个 MIC 并将其添加到该 MDN。 当 AS2MdnReceive 接收管道接收 MDN 时,如果需要一个经过签名的 MDN,则它会将 MDN 中的 MIC 与数据存储区中的 MIC 进行比较。

MDN 中的 MIC 与数据存储区中的 MIC 不匹配表明接收方在传输或接收消息期间发生了错误。 发生此类错误时将报告如下值:

  • AS2DispositionType:失败

  • AS2DispositionModifierExtensionType:错误

  • AS2DispositionModifierExtensionDescription:完整性检查失败

另请参阅

BizTalk Server 如何接收 AS2 消息
MDN 消息