處理內送 MDN
AS2 接收管線 (AS2EDIReceive 和 AS2Receive) 根據合作物件的合約屬性作為 AS2 訊息接收者來處理傳入的 MDN。 BizTalk Server 會自動將 MDN 相互關聯至外寄的 AS2 訊息。
以下是每個管線所執行的步驟:
在 [合約屬性] 對話方塊的 [單向 AS2 合約] 索引標籤的 [識別碼] 頁面,將訊息的 AS2 標頭中 AS2-From 值與 [AS2-From] 清單的值相符,以決定傳送方。 如果找不到符合項,管線就會中止處理並引發例外狀況。
將下列 AS2 屬性升級至內容:
IsAS2FailedMessage
DispositionType
GenerateAsynchronous200OKOnly
IsAS2MdnResponseMessage
IsAS2MessageSigned
OriginalMessageId
ReceivedContentMic
DispositionMode
MessageId
將訊息的所有 HTTP 標頭設定成 InboundHttpHeaders 屬性,並將其升級至訊息的內容。
如果已在單向 AS2 協議屬性中啟用,則產生 MDN 的複本 (電傳格式),並將此複本儲存在不可否認性資料庫中 (BizTalkDTADb 資料庫的 EdiMessageContent 資料表)。
在已簽署 MDN 的情況下,執行 MIME 處理,其中包括驗證簽章。
比較 MDN 中的 MIC (訊息完整性檢查),以及當 AS2Send 管線傳送出原始訊息時所計算出之資料存放區中的 MIC (如果適用)。 如需詳細資訊,請參閱 MDN 訊息。
在不可否認性的資料庫中建立相互關聯項目。
刪除 MDN,除非 [傳送者 MDN 設定] 頁面中的 [單向 AS2 合約] 索引標籤的 [合約屬性] 對話方塊的 [傳送者 MDN 設定] 頁面中設定路由/傳遞選項屬性的 [處理輸入 MDN]。
如果在 [合約屬性] 對話方塊的單向 AS2 合約索引標籤的[傳送者 MDN 設定] 頁面中設定路由傳送 MDN,接收管線會透過 AS2 解碼器路由傳送 MDN 做為傳遞訊息,並將它卸載至 MessageBox。 電傳格式的 MDN 包含所有的 HTTP 標頭。
注意
您可以將傳送埠設定成訂閱已放入 MessageBox 中的已接收 MDN。 若要訂閱收到的 MDN,請將傳送埠篩選設定為
IsAS2MdnResponseMessage==True
。注意
如果您使用 AS2EdiReceive 管線來處理收到的 MDN,就無法將 MDN 路由傳送至 MessageBox,方法是在 [合約屬性] 對話方塊的 [傳送者 MDN 設定] 頁面中,將 [傳送者 MDN 設定] 頁面的 [傳送者 MDN 設定] 屬性設定為 [傳送者 MDN 設定] 頁面,將MDN 路由傳送至 MessageBox。 嘗試這樣做會造成 EDI 錯誤,因為這樣 MDN 會傳遞至 EDI 解碼器,但是該解碼器無法處理 MDN。 如果 MDN 沒有傳送至 MessageBox,AS2Decoder 便會使用 MDN,這樣 MDN 便不會傳遞至 EDI 解碼器。
訊息完整性檢查
訊息完整性檢查 (MIC) 是用來確認 MDN 有和原始傳送的訊息相互關聯。 AS2Send 傳送管線會在產生原始 AS2 訊息時依據訊息內容計算 MIC,並將 MIC 儲存在資料存放區中。 當需要 MDN 時,原始訊息的接收者會產生 MIC 並將它加入至 MDN 中。 當 AS2MdnReceive 接收管線接收 MDN 時,如果有要求簽署的 MDN,這項檢查就會比較 MDN 中的 MIC 與資料存放區中的 MIC。
MDN 中的 MIC 與資料存放區中 MIC 若是不相符,就表示在傳輸期間或訊息由接收合作對象接收時有發生錯誤。 以下是發生這種失敗時所報告的值:
AS2DispositionType:失敗
AS2DispositionModifierExtensionType:錯誤
AS2DispositionModifierExtensionDescription:完整性檢查失敗