演练 (AS2):使用同步 MDN 通过 AS2 接收 EDI
本演练将介绍创建一个通过 AS2 传输方法接收 EDI 消息并返回异步 MDN 的解决方案的分步操作过程。
必备条件
以下为执行本主题中步骤的前提条件:
必须以“BizTalk Server管理员”或“BizTalk Server B2B 操作员”组的成员身份登录。
运行演练的计算机必须安装了 Internet 信息服务 (IIS)。
如果运行此演练的计算机安装了 64 位版本的 Windows,则您必须确保 BizTalk 主机标记只能为 32 位。 还必须确保 IIS 将“为应用程序池启用 32 位应用程序设置”设置为 True。 有关详细信息,请参阅 教程 3:AS2 教程。
解决方案如何接收 EDI/AS2 消息并返回同步 MDN
该解决方案可进行以下操作:
从贸易合作伙伴 Fabrikam 接收包含 HTTP 的 EDI 交换的 AS2 消息,并从 EDIINT/AS2 解码交换。
注意
此列表中的事件可能不会按所示顺序发生。
使用请求-响应接收端口向贸易伙伴返回同步 MDN。
将交换的 EDI 格式转换为内部 XML 格式,并将其删除到 MessageBox 中。
具有 PassThruTransmit 管道的 FILE 发送端口将提取消息 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 虚拟目录不由 Windows SharePoint Services 托管。
为 BizTalk Server 创建一个静态双向 HTTP 接收端口以从贸易合作伙伴接收包含有 EDI 交换的 AS2 消息,并发送 MDN 响应。 将接收管道配置为 AS2EDIReceive 管道,将发送管道配置为 AS2Send 管道。
创建静态单向 FILE 发送端口以将 EDI 负载(XML 格式)发送到本地文件夹。 创建本地文件夹。
为 Fabrikam 和 Contoso 创建参与方(贸易合作伙伴)。
为每个交易方创建一个业务配置文件。
在 Fabrikam 和 Contoso 的业务配置文件之间创建一个 AS2 协议。 AS2 协议应包含用于发送 AS2 消息并接收返回的同步 MDN 的属性。
在 Fabrikam 和 Contoso 的业务配置文件之间创建 X12 协议以接收 X12 消息。
使用作为 AS2 教程文件一部分提供的 HTTP 发送方实用工具测试解决方案。 该实用工具通过 AS2 传输方法发送一条包含有 EDI 交换的测试 AS2 消息(X12_00401_864-Sync.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
,然后单击“请求限制”。在“ 请求限制 ”对话框中,选择“ 谓词 ”选项卡,然后选择 以下谓词之一。 输入
POST
作为谓词 。在“ 访问 ”选项卡上,选择“ 脚本 ”,然后单击“ 确定”。
单击“ 确定” ,当系统提示允许 ISAPI 扩展时,单击“ 是”。
配置 Contoso 网页
在 IIS 管理器中,右键单击“ 应用程序池 ”,然后选择“ 添加应用程序池”。
在“添加应用程序池”对话框中,在“名称”中输入 BizTalkAppPool,然后在“.NET Framework版本”下拉列表中选择“.NET FrameworkV4.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 Server,则此过程是必需的。 在该情况下,您必须指定 IIS 虚拟目录不由 Windows SharePoint Server 托管。
在 “管理中心 ”页上的“ 管理中心”下,单击“ 应用程序管理”。
在 “应用程序管理 ”页上,单击“ 定义托管路径”。
在 “定义托管路径” 页的 “添加新路径”下,在“ 路径 ”文本框中输入 “Contoso”。 在 “类型”下,单击“ 排除的路径”,然后单击“ 确定”。
创建接收端口以接收 EDI over AS2 消息并返回 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。 为“类型”选择“文件”,然后单击“配置”。
在“ 文件传输属性 ”对话框中,对于“ 目标文件夹”,浏览到并在步骤 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 处理由参与方或支持从此群检查发送消息”框,可以指定所创建的参与方适用于同时托管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
。
- 在 “标识符 ”页上,输入 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> 选项卡上执行以下任务。
在“交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值相对应 (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 的值是在网格行上输入的,则将使用同一行的目标命名空间来确定要使用的架构。
在“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 中,注释掉以下行(紧接着 //请求异步 MDN 注释行):
Stream sr = new FileStream(getBizTalkInstallPath() + @"SDK\AS2 Tutorial\X12_00401_864.edi", FileMode.Open, FileAccess.Read);
取消对以下行(紧接着 //请求同步 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 输入消息中的事务集相对应。