通过 AS2 传出的非 EDI 消息的发送方处理
BizTalk Server附带的 AS2 管道可用于通过 AS2 传输处理 EDI 消息或非 EDI 消息。 不同的管道可用于两种不同类型的负载。 可以使用 AS2EdiSend 管道处理通过 AS2 传出的 EDI 消息,并使用 AS2Receive 管道接收关联的 MDN(如果已启用)。 可以使用 AS2Send 管道处理通过 AS2 传出的非 EDI 消息,并使用 AS2Receive 管道接收关联的 MDN(如果已启用)。 非 EDI 消息可以是任何二进制负载。
AS2Send 发送管道可对非 EDI 负载进行组装并对 AS2 消息进行编码。 AS2Receive 接收管道可对 MDN 响应进行解码。 可以将这些管道包含在一个 HTTP 双向要求响应发送端口中(对于同步 MDN),或者包含在一个单向 HTTP 发送端口和一个单向 HTTP 接收端口中(对于异步 MDN)。
若要通过 AS2 发送 EDI 交换,BizTalk Server 将执行以下步骤:
处理用于发送的非 EDI 负载
发送 AS2 消息
接收返回的 MDN
处理用于发送的非 EDI 有效负载
创建 AS2 消息之前,发送端口必须提取非 EDI 负载,并使用适当的筛选器表达式订阅消息。 可以使用双向发送端口或单向发送端口,具体取决于 MDN 将同步还是异步。 然后,AS2Send 管道将非 EDI 负载处理成 AS2 消息。
发送 AS2 消息
AS2 发送管道中的 AS2 编码器首先执行协议解析,以确定将要用于处理传出消息的协议属性。 有关详细信息,请参阅 传出 AS2 消息的协议解析。
AS2 编码器可生成发送 AS2 消息所需的 HTTP 标头集。 它将这些标头添加到上下文属性, HTTP.UserHttpHeaders
该属性是标头值的单个字符串。 AS2 编码器将在 HTTP.UserHttpHeaders 中生成以下 AS2 标头。 这些标头必须包含在 AS2 消息中。
AS2-To
AS2-From
AS2-Version
消息 ID
OriginalMessageID(仅限 MDN)
如果选中 “请求 MDN ”属性,管道会将消息中的 Disposition-Notification-To、Receipt-Delivery-Option 和 Signed-Receipt-MICalg AS2 标头设置为相应属性中的值;如果选中“请求签名的 MDN ”属性,它将 Signed-Receipt-Protocol AS2 标头设置为“pcks7-signature”。
HTTP.UserHttpHeaders
如果上下文属性不存在,AS2 编码器将创建它。 如果HTTP.UserHttpHeaders
已存在,AS2 编码器将使用它,而不是创建它。 如果创建HTTP.UserHttpHeaders
,请向其写入标头,然后将其写入消息上下文,AS2 Encoder 将使用这些标头,它们将优先于来自其他源的标头。 但 AS2-From 标头是一个例外,它始终来自协议属性。如果 AS2 标头不在 中
HTTP.UserHttpHeaders
,AS2 编码器将从单个上下文属性添加它。 这意味着,如果 AS2 标头尚未位于) 中,可以通过将 AS2 标头提升或写入消息 (的上下文来HTTP.UserHttpHeaders
添加它们。 如果 AS2 标头既不在 中HTTP.UserHttpHeaders
,也不在上下文中作为属性存在,则 AS2 Encoder 会将它从协议属性添加到 中HTTP.UserHttpHeaders
。AS2 Encoder 在 属性中
HTTP.UserHttpHeaders
生成标头后,它会将其写入消息的上下文。 HTTP 适配器选取HTTP.UserHttpHeaders
,并将标头HTTP.UserHttpHeaders
值从 前面追加到消息中。
注意
AS2 传输仅用于 HTTP 适配器。 然而,如果您手动设置了相应的上下文属性,则可以使用 FILE 适配器传输 AS2 消息。 有关详细信息,请参阅 通过文件发送端口发送 AS2 消息。
处理返回的 MDN
如果 MDN 已启用,则与双向发送端口相关联的接收管道将从接收 AS2 消息的参与方接收 MDN。
注意
有关 AS2 发送管道对传入 MDN 执行的处理的详细信息,请参阅 发送传出 MDN。