AS2 接收管道(AS2EDIReceive 和 AS2Receive)根据交易方作为 AS2 消息接收者的协议属性来处理传入的 MDN。 BizTalk Server 自动将 MDN 关联到传出 AS2 消息。
每个管道执行的步骤如下所示:
通过将邮件的 AS2 标头中的 AS2-From 值与“协议属性”对话框的单向 AS2 协议选项卡的“标识符”页中 AS2-From 列表的值相匹配来确定发送方。 如果未找到匹配项,管道将中止处理并引发异常。
将以下 AS2 属性提升到上下文:
是AS2协议失败的信息
处置类型
GenerateAsynchronous200OKOnly
IsAS2MdnResponseMessage
是否已签署AS2消息
原消息编号
收到内容麦克风
DispositionMode
消息ID
将 InboundHttpHeaders 属性设置为消息的所有 HTTP 标头,并将其提升为消息的上下文。
如果在单向 AS2 协议属性中启用,将以线路格式创建 MDN 的副本,并将其存储在不可否认的数据库中(BizTalkDTADb 数据库的 EdiMessageContent 表)。
执行 MIME 处理,包括验证 MDN 已签署的签名。
将 MDN 中的 MIC(消息完整性检查)与 AS2Send 管道在发送原始消息(如果适用)时计算的数据存储中的 MIC 进行比较。 有关详细信息,请参阅 MDN 消息。
在不可否认数据库中创建关联条目。
删除 MDN,除非在“协议属性”对话框的单向 AS2 协议选项卡的发件人 MDN 设置页中设置将入站 MDN 处理为 MessageBox 以进行路由/传递选项属性。
如果在“协议属性”对话框的单向 AS2 协议选项卡的“发送方 MDN 设置”页中设置了“在 MessageBox 中处理入站 MDN 以用于路由/传递选项”,则接收管道会将 MDN 以线缆格式通过 AS2 解码器作为传递消息,从而将其放入 MessageBox。 采用线路格式的 MDN 包含所有 HTTP 标头。
注释
可以设置发送端口来订阅已被放入消息箱的已接收MDN。 若要订阅收到的 MDN,请将发送端口筛选器设置为
IsAS2MdnResponseMessage==True
。注释
如果使用 AS2EdiReceive 管道处理收到的 MDN,则无法通过在“协议属性”对话框的单向 AS2 协议选项卡中将 入站 MDN 处理为 MessageBox 用于路由/传递选项 属性设置在 发送方 MDN 设置 页上,将 MDN 路由到 MessageBox。 尝试这样做将导致 EDI 错误,因为 MDN 将传递给 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:完整性检查失败