逐步解說 AS2):使用同步 MDN 透過 AS2 接收 EDI
本逐步解說提供一組逐步執行的程序,可建立透過 AS2 傳輸接收 EDI 訊息並傳回同步 MDN 的解決方案。
必要條件
下列是執行本主題所述程序的必要條件:
您必須以 BizTalk Server Administrators 或 BizTalk Server B2B 操作員群組的成員身分登入。
執行逐步解說的電腦必須安裝 Internet Information Services (IIS) 7。
若執行逐步解說的電腦是安裝 64 位元版本的 Windows,您必須確定 BizTalk 主機只標示為 32 位元。 您也必須確定 IIS 已將 [應用程式集區啟用 32 位應用程式設定] 設為 True。 如需詳細資訊,請參閱 教學課程 3:AS2 教學課程。
解決方案如何接收 EDI/AS2 訊息並傳回同步 MDN
這個解決方案會執行下列作業:
透過 HTTP 從交易夥伴 Fabrikam 接收包含 EDI 交換的 AS2 訊息,並從 EDIINT/AS2 解碼此交換。
注意
這份清單中的事件可能不會按照所示的順序發生。
使用要求-回應接收埠將同步 MDN 傳回給交易夥伴。
將交換的 EDI 格式轉換為內部 XML 格式,然後將它放置在 MessageBox 中。
具有 PassThruTransmit 管線的 FILE 傳送埠接收訊息 XML 檔案。
傳送埠將 EDI 交換 XML 檔案傳送至 Contoso 合作對象的資料夾。
下圖顯示這個解決方案的架構。
接收
此解決方案中的功能
下列項目適用於本逐步解說的功能:
不會產生 EDI 通知。 在逐步解說 (X12) :接收 EDI 交換和傳回通知中示範產生 EDI 通知。 透過 AS2 傳輸傳送 EDI 通知的說明,請參閱逐步解說 (AS2) :使用同步 MDN 透過 AS2 傳送 EDI。
這個解決方案是專為使用 X12 編碼 (而非 EDIFACT 編碼) 的交換所設計。
注意
EDIFACT 編碼使用的組態與 X12 編碼使用的組態近乎平行。
將針對內送交換執行 EDI 類型和擴充驗證。
將會啟用 AS2 和 EDI 報告,而且將會儲存交易集,然後從交換狀態報告中檢視交易集。
這個解決方案不會設定簽章、壓縮、加密或不可否認性資料庫中的訊息存放區。 如需設定這些屬性的程式,請參閱 設定 AS2 屬性。
設定和測試逐步解說
這個解決方案所需的程序包含下列步驟:
使用必要的訊息結構描述來建置並部署 BizTalk 專案,因此 BizTalk Server 可以使用此結構描述處理收到的交換。
讓 BTS ISAPI 篩選器可用於接收 AS2 訊息。
建立會從 Fabrikam 接收 AS2 訊息的 Contoso 虛擬目錄 (如接收位置中所設定)。
指定 Contoso 虛擬目錄不是由 Windows SharePoint Services 管理。
建立靜態雙向 HTTP 接收埠,以便讓 BizTalk Server 從交易夥伴接收包含 EDI 交換的 AS2 訊息,並傳送 MDN 回應。 將接收管線設定為 AS2EDIReceive 管線,並將傳送管線設定為 AS2Send 管線。
建立靜態單向 FILE 傳送埠,以將 EDI 內容 (XML 格式) 路由傳送至本機資料夾。 建立本機資料夾。
為 Fabrikam 與 Contoso 建立合作對象 (交易夥伴)。
為這兩個交易合作對象各建立一個商務設定檔。
在 Fabrikam 與 Contoso 的商務設定檔之間建立 AS2 協議。 AS2 協議包含的屬性可用來傳送 AS2 訊息,並接收回傳的同步 MDN。
在 Fabrikam 與 Contoso 的商務設定檔之間建立 X12 協議,以便接收 X12 訊息。
使用 AS2 教學課程檔案中隨附的 HTTP 傳送者公用程式,測試此解決方案。 這個公用程式會傳送測試 AS2 訊息,其中包含透過 AS2 傳輸的 EDI 交換 (AS2 教學課程中隨附的 X12_00401_864-Sync.edi)。 您必須從教學課程中的版本同時修改 HTTP 傳送器和測試訊息。 下面相關章節將說明這些變更。
設定逐步解說
本節說明設定逐步解說的程序。
部署訊息架構
在 Visual Studio 中,開啟專案 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\AS2 Tutorial\Schemas\Schemas.btproj。
注意
這個專案 (隨附於 AS2 教學課程) 包含了搭配測試訊息使用的 864 結構描述。
注意
本主題假設您已經在「BizTalk EDI 應用程式」中加入了自己應用程式的參考 (包含 EDI 結構描述、管線和協調流程), 如果沒有,請參閱將參考新增至 BizTalk Server EDI 應用程式。
以滑鼠右鍵按一下方案總管中的[架構] 專案,然後按一下 [屬性]。 按一下專案設計工具中的 [ 簽署 ] 索引標籤,核取 [ 簽署元件 ] 核取方塊,然後從下拉式清單中選取 [ 新增 ],並提供建立強式名稱金鑰檔的必要值。 儲存變更,然後關閉專案屬性視窗。
建置並部署 Schemas.btproj。
啟用 BTS ISAPI 篩選
按一下 [開始]、依序指向 [所有程式]、[系統管理工具],然後按一下 [Internet Information Services (IIS) 管理員]。
提示
視作業系統而定,[系統管理工具] 開始功能表選項可能無法使用。 在這種情況下,按一下 [ 開始],按一下 [ 執行],然後輸入
inetmgr
以開啟 [Internet Information Services] (IIS) 管理員。選取根網頁伺服器專案,然後在 [功能檢視] 中按兩下 [處理常式對應 ],然後在 [ 動作 ] 窗格中,按一下 [ 新增腳本對應]。
注意
在 Web 伺服器層級設定指令碼對應會使得此對應套用至所有子網站。 若要限制對應至特定網站或虛擬資料夾,請選取目標網站或資料夾,而不要選取 Web 伺服器。
在 [新增腳本對應] 對話方塊中,于 [要求路徑] 欄位中輸入
BtsHttpReceive.dll
。在 [可執行檔] 欄位中,按一下省略號 (...) 按鈕,然後流覽至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > HttpReceive。 選取 [BtsHttpReceive.dll],然後按一下 [ 確定]。
在 [名稱]欄位中輸入
BizTalk HTTP Receive
,然後按一下 [要求限制]。在 [要求限制]對話方塊中,選取[動詞] 索引標籤,然後選取下列其中一個動詞。 輸入
POST
作為動詞 。在 [ 存取] 索引標籤上,選取 [ 腳本 ],然後按一下 [ 確定]。
按一下 [確定 ],當系統提示您允許 ISAPI 擴充功能時,按一下 [ 是]。
設定 Contoso 網頁
在 IIS 管理員中,以滑鼠右鍵按一下 [應用程式集區 ],然後選取 [ 新增應用程式集區]。
在 [新增應用程式集區] 對話方塊中,于[名稱] 中輸入BizTalkAppPool,然後在[.NET Framework版本] 下拉式清單中選取[.NET Framework V4.0.30210]。 按一下 [確定]。
注意
版本號碼可能會因電腦上安裝的 .NET Framework 4.5 版本而有所不同。
選取[應用程式集區],在 [功能檢視] 中選取[BizTalkAppPool],然後按一下 [動作] 窗格中的 [進階設定]。
在 [ 進階設定 ] 對話方塊中,選取 [ 身分識別 ],然後按一下 省略號 (...) 按鈕。
在 [ 應用程式集區身分識別] 對話方塊中,選取 [ 自訂帳戶 ],然後按一下 [ 設定]。
針對系統管理員群組成員的使用者帳戶輸入 [使用者名稱 ] 和 [ 密碼 ],在 [確認密碼 ] 中輸入密碼,然後按一下 [ 確定 ] 三次以返回 IIS 管理員。
在 IIS 管理員中,開啟 [月臺] 資料夾。 以滑鼠右鍵按一下 [預設網站] 節點,然後選取 [ 新增應用程式]。
在 [新增應用程式] 對話方塊中,于 [別名] 文字方塊中輸入Contoso,然後按一下 [選取]。
在 [ 選取應用程式集 區] 對話方塊中,選取 [BizTalkAppPool ],然後按一下 [ 確定]。
針對[實體路徑],按一下省略號 (...) 按鈕,然後流覽至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > HttpReceive。
按一下 [測試設定 ],並確認 [ 測試連線 ] 對話方塊中沒有顯示任何錯誤。 按一下 [關閉],然後按一下 [確定]。
在 IIS 管理員中,選取 [Contoso] 虛擬目錄,然後在 [ 功能檢視] 中按兩下 [ 驗證]。
在 [驗證] 頁面中,選取 [匿名驗證],並確認[狀態] 為 [已啟用]。 如果[狀態] 為 [已停用],請按一下 [動作] 窗格中的 [啟用]。
指定您的虛擬目錄不是由 Windows SharePoint Services 管理
如果電腦上安裝Windows SharePoint Services,請按一下 [開始],指向 [所有程式],指向 [系統管理工具],然後按一下 [SharePoint 3.0 管理中心]。
注意
如果設定逐步解說的相同電腦中安裝了 Windows SharePoint Services,就必須執行這個程序。 在此情況下,您必須指定 IIS 虛擬目錄不是由 Windows SharePoint Server 管理。
在 [ 管理中心] 頁面的 [ 管理中心] 底下,按一下 [應用程式管理]。
在 [ 應用程式管理 ] 頁面上,按一下 [定義受控路徑]。
在 [ 定義受控路徑 ] 頁面的 [ 新增路徑] 底下,然後在 [ 路徑 ] 文字方塊中,輸入 Contoso。 在 [類型] 底下,按一下 [ 排除路徑],然後按一下 [ 確定]。
建立接收埠以透過 AS2 訊息接收 EDI 並傳回 MDN
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下BizTalk 應用程式 1節點下的 [接收埠] 節點,指向 [新增],然後按一下 [要求-回應接收埠]。
將接收埠命名為 ,然後按一下主控台樹中的 [ 接收位置 ]。
按一下 [新增] 。
為接收位置命名,選取[類型] 的 [HTTP],然後按一下 [設定]。
針對 [虛擬目錄加上 ISAPI 擴充功能],輸入
/Contoso/BTSHTTPReceive.dll
。選取 [ 暫停失敗的要求] 核取方塊,然後按一下 [ 確定]。
針對 [接收管線],選取 [AS2EDIReceive]。
針對 [傳送管線],選取 [AS2Send]。
按一下 [確定],然後再按一下 [確定]。
在 BizTalk Server 管理主控台的 [接收位置] 窗格中,以滑鼠右鍵按一下接收位置,然後按一下 [啟用]。
建立傳送埠以將 EDI 承載傳送至本機資料夾
在 Windows 檔案總管中,建立名為 EDI_to_Contoso 的本機資料夾,以傳送 EDI 承載。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下 [傳送埠],指向 [新增],然後按一下 [靜態 One-Way 傳送埠]。
在 [ 傳送埠屬性 ] 對話方塊中,為您的傳送埠命名,例如 Send_Payload。 針對[類型]選取[FILE],然後按一下 [設定]。
在 [ 檔案傳輸屬性] 對話方塊的 [ 目的地] 資料夾中,流覽至 ,然後選取您在步驟 1 中建立 的EDI_to_Contoso 資料夾。 將 檔案名 保留為 %MessageID%.xml。 按一下 [確定]。
針對 [ 傳送管線 ] 下拉式清單,接受預設 的 PassThruTransmit。
按一下主控台樹狀目錄中的 [ 篩選 ]。 針對 [屬性],輸入 BTS。MessageType。 針對 [運算子],輸入 == 。 針對 [值],輸入訊息的訊息類型:
http://schemas.microsoft.com/BizTalk/Edi/X12/2006#X12_00401_864
。按一下 [確定]。
在 [BizTalk Server 管理主控台] 的 [傳送埠] 窗格中,以滑鼠右鍵按一下傳送埠,然後按一下 [啟動]。
建立 Fabrikam 的合作物件和商務設定檔
以滑鼠右鍵按一下 [BizTalk Server 管理主控台中的[合作物件] 節點,指向 [新增],然後按一下 [合作物件]。
在 [ 名稱 ] 文字方塊中輸入合作物件的名稱,然後按一下 [ 確定]。
注意
選取 [本地 BizTalk 處理合作物件 OR 所接收的訊息] 支援從此合作物件傳送訊息核取方塊,您可以指定所建立的物件是同時裝載BizTalk Server的相同組織。 據此,建立協議時將會啟用或停用某些屬性。 不過,就本逐步解說而言,您可以讓這個核取方塊保持選取狀態。
以滑鼠右鍵按一下合作物件名稱,指向 [ 新增],然後按一下 [商務設定檔]。
在 [配置檔案屬性] 對話方塊的 [一般] 頁面上,于 [名稱] 文字方塊中輸入Fabrikam_Profile。
注意
當您建立合作對象時,會同時建立設定檔。 您可以重新命名再使用該設定檔,而不需建立新設定檔。 若要重新命名設定檔,請以滑鼠右鍵按一下設定檔,然後選取 [ 屬性]。 在 [ 一般] 頁面中,指定設定檔的名稱。
建立 Contoso 的合作物件和商務設定檔
以滑鼠右鍵按一下 [BizTalk Server 管理主控台中的[合作物件] 節點,指向 [新增],然後按一下 [合作物件]。
在 [ 名稱 ] 文字方塊中輸入合作物件的名稱,然後按一下 [ 確定]。
注意
選取 [本地 BizTalk 處理合作物件 OR 所接收的訊息] 支援從此合作物件傳送訊息核取方塊,您可以指定所建立的物件是同時裝載BizTalk Server的相同組織。 據此,建立協議時將會啟用或停用某些屬性。 不過,就本逐步解說而言,您可以讓這個核取方塊保持選取狀態。
以滑鼠右鍵按一下合作物件名稱,指向 [ 新增],然後按一下 [商務設定檔]。
在 [配置檔案屬性] 對話方塊的 [一般] 頁面上,于 [名稱] 文字方塊中輸入Contoso_Profile。
注意
當您建立合作對象時,會同時建立設定檔。 您可以重新命名再使用該設定檔,而不需建立新設定檔。 若要重新命名設定檔,請以滑鼠右鍵按一下設定檔,然後選取 [ 屬性]。 在 [ 一般] 頁面中,指定設定檔的名稱。
建立兩個商務設定檔之間的 AS2 合約
以滑鼠右鍵按一下 [Fabrikam_Profile],指向 [ 新增],然後按一下 [ 合約]。
在 [ 一般屬性] 頁面的 [ 名稱 ] 文字方塊中,輸入合約的名稱。
從 [ 通訊協定 ] 下拉式清單中,選取 [AS2]。
在 [ 第二個合作夥伴 ] 區段中,從 [ 名稱 ] 下拉式清單中,選取 [Contoso]。
在 [ 第二個合作夥伴 ] 區段中,從 [ 設定檔 ] 下拉式清單中,選取 [Contoso_Profile]。
您會發現[ 一般 ] 索引標籤旁邊會新增兩個新的索引標籤。每個索引標籤都用於設定單向 AS2 合約。
在 [ 一般 ] 索引標籤的 [ 一般屬性 ] 頁面上,于 [ 一般主機設定 ] 區段中,選取 [ 開啟報告]。
在 [Fabrikam-Contoso > ] 索引標籤上執行下列工作。
- 在 [ 識別碼] 頁面上,輸入 AS2-From 和 AS2-To的值。 針對 AS2-From,輸入
Fabrikam
。 針對 AS2- To,輸入Contoso
。
- 在 [ 識別碼] 頁面上,輸入 AS2-From 和 AS2-To的值。 針對 AS2-From,輸入
在 [Contoso-Fabrikam > ] 索引標籤 上執行下列工作。
注意
在此逐步解說中,我們在索引標籤中指定必要值,以便可以順利地建立協議。 若要成功建立合約,這兩個單向合約索引標籤都必須針對 AS2_From 和 AS2-To定義值。
- 在 [ 識別碼] 頁面上,輸入 AS2-From 和 AS2-To的值。 針對 AS2-From,輸入
Contoso
。 針對 AS2- To,輸入Fabrikam
。
- 在 [ 識別碼] 頁面上,輸入 AS2-From 和 AS2-To的值。 針對 AS2-From,輸入
按一下 [套用]。
按一下 [確定]。 新增的合約會列在[合作物件和商務設定檔] 窗格的 [合約] 區段中。 預設會啟用新增的協議。
建立兩個商務設定檔之間的 X12 合約
以滑鼠右鍵按一下 [Fabrikam_Profile],指向 [ 新增],然後按一下 [ 合約]。
在 [ 一般屬性] 頁面的 [ 名稱 ] 文字方塊中,輸入合約的名稱。
從 [ 通訊協定 ] 下拉式清單中,選取 [X12]。
在 [ 第二個合作夥伴 ] 區段中,從 [ 名稱 ] 下拉式清單中,選取 [Contoso]。
在 [ 第二個合作夥伴 ] 區段中,從 [ 設定檔 ] 下拉式清單中,選取 [Contoso_Profile]。
您會發現[ 一般 ] 索引標籤旁邊會新增兩個新的索引標籤。每個索引標籤都是用來設定單向 X12 合約。
在 [ 一般 ] 索引標籤的 [ 一般屬性 ] 頁面的 [ 一般主機設定 ] 區段中,選取 [ 開啟報告],然後選取 [ 儲存訊息承載以供報告]。
在 [Fabrikam-Contoso > ] 索引標籤上執行下列工作。
在 [交換設定] 區段下的 [識別碼]頁面上,輸入符合測試訊息中這些標頭欄位值的限定詞和識別碼欄位 (、ISA6、ISA7 和 ISA8) 。
注意
BizTalk Server需要傳送者和接收者的限定詞和識別碼欄位,才能執行合約解析。 它會比對交換標頭中 ISA5、 ISA6、 ISA7和 ISA8 的值,以及合約屬性中的值。 BizTalk Server也會比對傳送者限定詞和識別碼 (來解決合約,而不需接收者限定詞和識別碼) 。 如果BizTalk Server無法解決合約,則會使用後援合約屬性。
注意
在此逐步解說中,將ISA5設定為 ZZ、ISA6設定為 7654321、ISA7設定為ZZ,並將 ISA8設定為1234567。
在 [交換設定] 區段下的 [驗證] 頁面上,確定未核取[檢查重複的 ISA13] 選項。
注意
清除 檢查重複 ISA13 屬性可讓您接收相同訊息的多個實例。
如果您使用隨附于BizTalk Server的標準架構之一,請在 [交易集設定] 區段下的 [本機主機設定] 頁面上,選取要用來處理傳入交換之架構的命名空間。
使用 作法 預設值 選取欄中的核取方塊 目標命名空間 請選取 http://schemas.microsoft.com/BizTalk/EDI/X12/2006
。注意
設定屬性可讓BizTalk Server判斷要用於處理傳入 850 交換的架構。 如果交換的 GS02 和 ST01 值是輸入在格線行中,則將會使用同一行的目標命名空間來判斷要使用的結構描述。
在 [Contoso-Fabrikam > ] 索引標籤上執行下列工作。
注意
在此逐步解說中,我們在索引標籤中指定必要值,以便可以順利地建立協議。 若要成功建立合約,這兩個單向合約索引標籤都必須定義 ISA5、 ISA6、 ISA7和 ISA8的值。
在 [交換設定] 區段下的 [識別碼]頁面上,輸入限定詞和識別碼欄位的值, (ISA5、ISA6、ISA7和ISA8) ,這些欄位會對應至測試訊息中這些標頭欄位的值。
注意
在此逐步解說中,將 ISA5 設定為 ZZ、 ISA6 設定 為 1234567、 ISA7 設定為 ZZ, 並將 ISA8 設定為 7654321。
按一下 [套用]。
按一下 [確定]。 新新增的合約會列在 [合作物件和商務設定檔] 窗格的 [合約] 區段中。 預設會啟用新增的協議。
測試逐步解說
本節提供關於如何測試逐步解說的資訊。
測試解決方案
在 Visual Studio 中,開啟 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\AS2 Tutorial\Sender 資料夾中的 Sender.csproj 專案。
在 HttpSender.cs 中,將下列一行標記為註解 (緊接在 //Request Asynchronous MDN 註解行底下):
Stream sr = new FileStream(getBizTalkInstallPath() + @"SDK\AS2 Tutorial\X12_00401_864.edi", FileMode.Open, FileAccess.Read);
將下列一行標記為註解 (緊接在 //Request Synchronous MDN 註解行底下):
Stream sr = new FileStream(getBizTalkInstallPath() + @"SDK\AS2 Tutorial\X12_00401_864-Sync.edi", FileMode.Open, FileAccess.Read);
建置這個專案。
在 Windows 檔案總管中,移至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\AS2 教學課程。 在 [記事本] 中開啟 X12_00401_864-Sync.edi。 刪除定義 Disposition-Notification-Options 標頭的一行,然後儲存檔案。
開啟命令視窗。 移至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\AS2 Tutorial\Sender\bin\debug。 執行 Sender.exe。
注意
這時執行 Sender.exe 會將訊息 X12_00401_864-sync.edi 傳送至 Contoso 虛擬目錄 (BTS HTTP 接收位置)。
確認命令視窗中已顯示 MDN。 確認 MDN 的 AS2-From 是 Contoso,而 AS2-To 則是 Fabrikam。
注意
Sender.exe 會將 MDN 顯示在命令視窗中。
開啟您建立的 Contoso 本機資料夾,將 EDI 承載傳送 (至 \EDI_to_Contoso) 。 確認資料夾中有 .XML 檔案。 開啟這個 XML 檔案,並確認它包含 864 交易集。
在 [記事本] 中開啟測試訊息 X12_00401_864-Sync.edi,並確認 \EDI_to_Contoso 本機資料夾中輸出訊息中設定的交易會對應至 X12_00401_864-Sync.edi 輸入訊息中的交易集。