演练 (AS2):使用异步 MDN 通过 AS2 接收 EDI
本演练提供了一组分步过程,用于创建一个解决方案,用于通过 AS2 传输接收 EDI 消息,并返回异步 MDN。
必备条件
以下为执行本主题中的过程的前提条件:
必须以“BizTalk Server管理员”或“BizTalk Server B2B 操作员”组的成员身份登录。
运行演练的计算机必须安装了 Internet 信息服务 (IIS)。
如果运行此演练的计算机安装了 64 位版本的 Windows,则您必须确保 BizTalk 主机标记只能为 32 位。 还必须确保 IIS 已将“为应用程序池启用 32 应用程序设置”设置为 True。 有关详细信息,请参阅 教程 3:AS2 教程。
解决方案如何接收 EDI 交换并返回异步 MDN
该解决方案将执行以下操作:
从贸易合作伙伴通过 HTTP 接收包含有 EDI 交换的 AS2 消息,并对来自 EDIINT/AS2 的交换进行解码。
注意
此列表中的事件可能不会按所示顺序发生。
生成 MDN 响应,并将其放置到 MessageBox 中。
通过动态发送端口提取消息 MDN。
将异步消息 MDN 返回到贸易合作伙伴。
将 EDI 格式的交换转换为内部 XML 格式,并将其放在 MessageBox 中。
具有 PassThruTransmit 管道的发送端口将从 MessageBox 提取消息 XML 文件。
该发送端口将 EDI 交换 XML 文件发送到 Contoso 参与方的某一文件夹。
下图显示出此解决方案的结构。
此解决方案中的功能
本演练的功能具有以下特点:
不会生成 EDI 确认。 演练 (X12) :接收 EDI 交换并发送回确认中演示了生成 EDI 确认。 演练 (AS2) :使用异步 MDN 通过 AS2 发送 EDI 中介绍了通过 AS2 传输发送 EDI 确认。
该解决方案专用于使用 X12 编码而不是 EDIFACT 编码的交换。
注意
用于 EDIFACT 编码的配置与用于 X12 编码的配置几近相同。
EDI 类型和扩展的验证将在传入交换上执行。
系统将启用 AS2 和 EDI 报告功能,并保存事务集以从交换状态报告进行查看。
此解决方案不在不可否认数据库中配置签名、压缩、加密或消息存储。 有关配置这些属性的过程,请参阅 配置 AS2 属性。
配置和测试演练
该解决方案所需的过程包括:
使用所需的消息架构生成并部署 BizTalk 项目,并将 BizTalk Server 设置为在处理接收的交换时使用这些架构。
启用接收 AS2 消息时使用的 BTS ISAPI 筛选器。
按照接收位置中的配置,创建一个用于从 Fabrikam 接收 AS2 消息的 Contoso 虚拟目录。
创建一个用于从 Contoso 接收 MDN 的 Fabrikam 虚拟目录。
指定 Windows SharePoint Services 不管理 Contoso 和 Fabrikam 虚拟目录。
为 BizTalk Server 创建一个静态单向 HTTP 接收端口以从贸易合作伙伴接收包含 EDI 业务文档的 AS2 消息。 将接收管道配置为 AS2EDIReceive 管道。
为 BizTalk Server 创建一个动态单向 HTTP 发送端口以发送对应于所接收 AS2 消息的 MDN。
注意
此发送端口基于 EdiIntAS.IsAS2AsynchronousMDN 属性(由 AS2EdiReceive 管道设置为 True)和相关标记订阅 MDN。 发送端口必须是动态的,因此它将向消息标头的 Receipt-Delivery-Notification 行中的地址发送该 MDN。
创建静态单向 FILE 发送端口以将 EDI 负载(XML 格式)发送到本地文件夹。 创建本地文件夹。
为 Fabrikam 和 Contoso 创建参与方(贸易合作伙伴)。
为每个交易方创建一个业务配置文件。
在 Fabrikam 和 Contoso 的业务配置文件之间创建一个 AS2 协议。 AS2 协议中将包含发送 AS2 消息并接收返回的异步 MDN 的属性。
在 Fabrikam 和 Contoso 的业务配置文件之间创建 X12 协议以接收 X12 消息。
使用作为 AS2 教程文件一部分提供的 HTTP 发送方实用工具测试解决方案。 该实用工具将通过 AS2 传输类型发送一条包含 EDI 交换的测试 AS2 消息。 该实用工具通过 AS2 传输方法发送一条包含有 EDI 交换的测试 AS2 消息(X12_00401_864.edi,也包括在 AS2 教程中)。 在此演练中使用的 HTTP 发送实用工具和测试消息与交付用于本教程的版本相同。
配置演练
本部分介绍配置演练的过程。
部署消息架构
在 Visual Studio 中,打开项目 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\AS2 Tutorial\Schemas\Schemas.btproj。
注意
此项目随 AS2 教程一起提供,其中包括一个 864 架构以与测试消息一起使用。
注意
本主题假定你已从你的应用程序添加了对包含 EDI 架构、管道和业务流程的 BizTalk EDI 应用程序的引用。 如果没有,请参阅添加对 BizTalk Server EDI 应用程序的引用。
右键单击解决方案资源管理器中的“架构”项目,然后单击“属性”。 单击项目设计器中的“签名”选项卡,检查“为程序集签名”复选框,然后从下拉列表中选择“新建”,并提供创建强名称密钥文件所需的值。 保存更改并关闭项目属性窗口。
生成并部署 Schemas.btproj。
启用 BTS ISAPI 筛选器
单击“开始”,指向“所有程序”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
提示
根据操作系统的不同,“管理工具”开始菜单选项可能不可用。 在这种情况下,单击“ 开始”,单击“ 运行”,然后输入
inetmgr
以打开“Internet Information Services (IIS) 管理器”。选择根 Web 服务器条目,在 “功能视图”中双击“ 处理程序映射 ”,然后在“操作”窗格中单击“ 添加脚本映射”。
注意
在 Web 服务器级别配置脚本映射将导致此映射应用于所有子网站。 如果要将映射限制为特定网站或虚拟文件夹,请选择目标网站或文件夹,而不是 Web 服务器。
在“添加脚本映射”对话框中的“请求路径”字段中输入
BtsHttpReceive.dll
。在“可执行文件”字段中,单击省略号 (...) 按钮,然后浏览到\Program Files (x86) \Microsoft BizTalk Server <VERSION>HttpReceive。 选择“BtsHttpReceive.dll”,然后单击“ 确定”。
在 字段中输入
BizTalk HTTP Receive
,然后单击“请求限制”。Name
在“请求限制”对话框中,选择“ 谓词 ”选项卡,然后选择 以下谓词之一。 输入
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 虚拟目录,然后在 “功能视图”中双击“ 身份验证”。
在 “身份验证 ”页中,选择“ 匿名身份验证 ”,并验证 “状态 ”是否为 “已启用”。 如果“状态”为“已禁用”,请单击“操作”窗格中的“启用”。
配置 Fabrikam 网页
在 IIS 管理器中,打开 “站点” 文件夹。 右键单击“ 默认网站” 节点,然后选择“ 添加应用程序”。
在“添加应用程序”对话框中,在“别名”中输入 Fabrikam,然后单击“选择”。
在 “选择应用程序池 ”对话框中,选择“ BizTalkAppPool ”,然后单击“ 确定”。
对于“物理路径”,单击省略号 (...) 按钮,然后浏览到 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\AS2 Tutorial\Fabrikam。
单击“ 测试设置” ,并验证“ 测试连接 ”对话框中是否未显示任何错误。 单击“关闭”,然后单击“确定”。
在 IIS 管理器中,选择 Contoso 虚拟目录,然后在 “功能视图”中双击“ 身份验证”。
在 “身份验证 ”页中,选择“ 匿名身份验证 ”,并验证 “状态 ”是否为 “已启用”。 如果“状态”为“已禁用”,请单击“操作”窗格中的“启用”。
指定虚拟目录不由 Windows SharePoint Services 托管
如果计算机上安装了Windows SharePoint Services,请单击“开始”,指向“所有程序”,指向“管理工具”,然后单击“SharePoint 3.0 管理中心”。
注意
如果用于设置演练的同一计算机上还安装了 Windows SharePoint Server,则此过程是必需的。 在该情况下,您必须指定 IIS 虚拟目录不由 Windows SharePoint Server 托管。
在 “管理中心 ”页上的“ 管理中心”下,单击“ 应用程序管理”。
在“ 应用程序管理 ”页上,单击“ 定义托管路径”。
在 “定义托管路径” 页的 “添加新路径”下的“ 路径 ”文本框中,输入 “Contoso”。 在“ 类型”下,单击“ 排除的路径”,然后单击“ 确定”。
请为 Fabrikam 虚拟目录重复步骤 4。
创建接收端口以通过 AS2 从 Fabrikam 接收 EDI 交换
在“BizTalk Server管理控制台”中,右键单击 BizTalk 应用程序 1 节点下的“接收端口”节点,指向“新建”,然后单击“单向接收端口”。
命名接收端口,然后单击控制台树中的“ 接收位置 ”。
单击 “新建” 。
命名接收位置,为“类型”选择“HTTP”,然后单击“配置”。
对于 “虚拟目录和 ISAPI 扩展”,输入
/Contoso/BTSHTTPReceive.dll
。选中“检查挂起失败的请求”框,然后单击“确定”。
对于 “接收管道”,选择“ AS2EDIReceive”。
依次单击“确定”和“确定”。
在BizTalk Server管理控制台的“接收位置”窗格中,右键单击接收位置,然后单击“启用”。
创建动态发送端口将 MDN 发送至 Fabrikam
在“BizTalk Server管理控制台”中,右键单击 BizTalk 应用程序 1 节点下的“发送端口”节点,指向“新建”,然后单击“动态单向发送端口”。
在“ 发送端口属性 ”对话框中,命名发送端口。
对于 “发送管道”,选择“ AS2Send”。
在控制台树中,选择“ 筛选器”。 对于 “属性”,输入 EdiIntAS.IsAS2AsynchronousMDN;对于 “运算符”,输入 ==;对于 “值” ,请输入 “True”。
单击 “确定” 。
创建用于将 EDI 负载发送到本地文件夹的发送端口
在 Windows 资源管理器中,创建一个名为 的 Contoso 本地文件夹 ,EDI_to_Contoso 将 EDI 有效负载发送到。
在BizTalk Server管理控制台中,右键单击“发送端口”,指向“新建”,然后单击“静态 One-Way 发送端口”。
在“ 发送端口属性 ”对话框中,为发送端口命名,例如 ,Send_Payload。 为“类型”选择“文件”,然后单击“配置”。
在“ 文件传输属性 ”对话框中,对于“ 目标文件夹”,浏览并选择在步骤 1 中创建 EDI_to_Contoso 文件夹。 将 “文件名 ”保留为 %MessageID%.xml。 单击 “确定” 。
接受 Send Pipeline 的 PassThruTransmit 默认值。
单击控制台树中的“ 筛选器 ”。 对于 “属性”,输入 BTS。MessageType。 对于 “运算符”,输入 ==。 对于 “值”,输入消息
http://schemas.microsoft.com/BizTalk/Edi/X12/2006#X12_00401_864
的消息类型 。单击 “确定” 。
在BizTalk Server管理控制台的“发送端口”窗格中,右键单击发送端口,然后单击“启动”。
为 Fabrikam 创建群和业务配置文件
右键单击BizTalk Server管理控制台中的“群”节点,指向“新建”,然后单击“群”。
在“ 名称 ”文本框中输入群的名称,然后单击“ 确定”。
注意
通过选择“本地 BizTalk 处理由参与方或支持从此参与方检查发送消息”框,可以指定所创建的参与方适用于同时托管BizTalk Server的同一组织。 基于此,在创建协议时将启用或禁用某些属性。 但是,对于本演练,可以将此检查框保留为选中状态。
右键单击参与方名称,指向 “新建”,然后单击“ 业务配置文件”。
在“配置文件属性”对话框的“常规”页上,在“名称”文本框中输入Fabrikam_Profile。
注意
创建群时,还会创建配置文件。 可以重命名并使用该配置文件,而不是创建新配置文件。 若要重命名配置文件,请右键单击配置文件并选择 “属性”。 在“ 常规 ”页中,指定配置文件的名称。
为 Contoso 创建参与方和业务配置文件
右键单击BizTalk Server管理控制台中的“群”节点,指向“新建”,然后单击“群”。
在“ 名称 ”文本框中输入群的名称,然后单击“ 确定”。
注意
通过选择“本地 BizTalk 处理由参与方或支持从此参与方检查发送消息”框,可以指定所创建的参与方适用于同时托管BizTalk Server的同一组织。 基于此,在创建协议时将启用或禁用某些属性。 但是,对于本演练,可以将此检查框保留为选中状态。
右键单击参与方名称,指向 “新建”,然后单击“ 业务配置文件”。
在“配置文件属性”对话框的“常规”页上,在“名称”文本框中输入Contoso_Profile。
注意
创建群时,还会创建配置文件。 可以重命名并使用该配置文件,而不是创建新配置文件。 若要重命名配置文件,请右键单击配置文件并选择 “属性”。 在“ 常规 ”页中,指定配置文件的名称。
在两个业务配置文件之间创建 AS2 协议
右键单击“ Fabrikam_Profile”,指向“ 新建”,然后单击“ 协议”。
在 “常规属性” 页的“ 名称 ”文本框中,输入协议的名称。
从 “协议 ”下拉列表中,选择“ AS2”。
在“ 第二个合作伙伴 ”部分中,从“ 名称 ”下拉列表中选择“ Contoso”。
在“ 第二个合作伙伴 ”部分中,从“ 配置文件 ”下拉列表中选择 “Contoso_Profile”。
你会注意到,“ 常规 ”选项卡旁边添加了两个新选项卡。每个选项卡用于配置单向 AS2 协议。
在“ 常规 ”选项卡的 “常规属性” 页上的 “常见主机设置” 部分中,选择“ 打开报告”。
在 Fabrikam-Contoso> 选项卡上执行以下任务。
在 “标识符 ”页上,输入 AS2-From 和 AS2-To 的值。 对于 “AS2-From”,输入
Fabrikam
。 对于 “AS2- To”,请输入Contoso
。在“验证”页上,选择“将协议设置用于验证和 MDN 而不是消息标头检查框
在 “确认 (MDN) ”页中,执行以下操作:
选择“请求 MDN 检查”框。
确保清除“请求签名的 MDN 检查”框。
选中“请求异步 MDN 检查”框。
在 “收据传递选项 (URL) ”文本框中,输入
http://localhost/Fabrikam/Default.aspx?Destination=_MDNToFabrikam
。
在“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> 选项卡上执行以下任务。
在“交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值相对应的限定符字段和标识符字段 (ISA5、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附带的标准架构之一,请在“本地主机设置”页上的“事务集设置”部分下,选择要用于处理传入交换的架构的命名空间。
使用此选项 要执行此操作 Default 选中列中的复选框 目标命名空间 选择 http://schemas.microsoft.com/BizTalk/EDI/X12/2006
。注意
通过设置属性,BizTalk Server可以确定在处理传入 850 交换时要使用的架构。 如果某一交换的 GS02 和 ST01 的值是在网格行上输入的,则将使用同一行的目标命名空间来确定要使用的架构。
在“事务集设置”部分下的“信封”页上,执行以下操作:
使用此选项 要执行此操作 Default 选择“默认值”。 注意: 选择此行作为默认值时,将使用 GS1、 GS2、 GS3、 GS7 和 GS8 的值,即使 事务类型、 版本/发布和 目标命名空间 的值与消息不匹配也是如此。 事务类型 选择测试消息的消息类型,例如 864 – 短信。 版本/发行版 输入 00401。 目标命名空间 选择 http://schemas.microsoft.com/BizTalk/EDI/X12/2006
。GS1 验证是否已选择测试消息的消息类型,例如 TX - 文本消息 (864) 。 GS2 输入 01。 GS3 输入 7654321。 GS4 选择所需的日期格式。 选择“ CCYYMMDD”。 注意: 必须在下拉列表中选择值,而不只是在字段中单击即可显示默认值。 如果你仅单击字段,而没有从下拉列表中选择值,则实际上并未选择值。 GS5 选择所需的时间格式。 选择“ HHMMSSdd”。 GS7 选择 T - 运输数据协调委员会 (TDCC) 。 GS8 验证是否已将 EDI 版本输入为 00401。
在“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.edi。 删除用于定义 Disposition-Notification-Options 头的行,然后保存该文件。
在 Windows 资源管理器中,移动到 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\AS2 Tutorial\Sender\bin\debug 并执行Sender.exe。
注意
在此实例中运行 Sender.exe 将把消息 X12_00401_864.edi 发送到 Contoso 虚拟目录(BTS http 接收位置)。
打开创建的 Contoso 本地文件夹,将 EDI 有效负载发送到 (\EDI_to_Contoso) 。 验证该文件夹中有一个 .XML 文件。 打开该 XML 文件并验证它包含有一个 864 事务集。
打开 MDN 要返回的 Fabrikam 本地文件夹。 在 Windows 资源管理器中,移动到 \Program Files (x86) \Microsoft BizTalk Server <VERSION>SDK\AS2 Tutorial\_MDNToFabrikam。 打开记事本中的消息文件,并验证该 MDN。 验证在 MDN 中,AS2-From 是 Contoso,AS2-To 是 Fabrikam。
在记事本中打开测试消息 X12_00401_864.edi,验证 \EDI_to_Contoso 本地文件夹的输出消息中的事务集与 X12_00401_864.edi 输入消息中的事务集相对应。