演练 (AS2):使用同步 MDN 通过 AS2 接收 EDI

本演练将介绍创建一个通过 AS2 传输方法接收 EDI 消息并返回异步 MDN 的解决方案的分步操作过程。

先决条件

以下为执行本主题中步骤的前提条件:

  • 必须以BizTalk Server管理员或BizTalk Server B2B 操作员组的成员身份登录。

  • 运行演练的计算机必须安装了 Internet 信息服务 (IIS)。

  • 如果运行此演练的计算机安装了 64 位版本的 Windows,则您必须确保 BizTalk 主机标记只能为 32 位。 还必须确保 IIS 为设置为 True 的应用程序池启用了 32 位应用程序设置。 有关详细信息,请参阅 教程 3:AS2 教程

解决方案如何接收 EDI/AS2 消息并返回同步 MDN

该解决方案可进行以下操作:

  1. 从贸易伙伴 Fabrikam 通过 HTTP 接收包含 EDI 交换的 AS2 消息,并从 EDIINT/AS2 解码交换。

    注意

    此列表中的事件可能不会按所示顺序发生。

  2. 使用请求-响应接收端口将同步 MDN 返回到贸易伙伴。

  3. 将交换的 EDI 格式转换为内部 XML 格式,并将其拖放到 MessageBox 中。

  4. 具有 PassThruTransmit 管道的 FILE 发送端口将提取消息 XML 文件。

  5. 发送端口将 EDI 交换 XML 文件发送到 Contoso 方的文件夹。

    下图显示出此解决方案的结构。

    AS2 receiving with a synchronous MDN

此解决方案中的功能

本演练的功能具有以下特点:

配置和测试演练

该解决方案所需的过程包括:

  • 使用所需的消息架构生成并部署 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 发送程序和测试消息进行修改。 这些更改将在以下相关各节进行介绍。

配置演练

本部分介绍配置演练的过程。

部署消息架构

  1. 在Visual Studio中,打开项目 \Program Files (x86) \Microsoft BizTalk Server <VERSIONSDK>\AS2 Tutorial\Schemas\Schemas.btproj。

    注意

    此项目随 AS2 教程一起提供,其中包括一个 864 架构以与测试消息一起使用。

    注意

    本主题假定你已从你的应用程序添加了对包含 EDI 架构、管道和业务流程的 BizTalk EDI 应用程序的引用。 如果没有,请参阅添加对 BizTalk Server EDI 应用程序的引用

  2. 右键单击解决方案资源管理器中的架构项目,然后单击“属性”。 单击项目设计器中的 “签名 ”选项卡,选中“ 签名程序集 ”复选框,然后从下拉列表中选择“ 新建 ”,并提供创建强名称密钥文件所需的值。 保存更改并关闭项目属性窗口。

  3. 生成并部署 Schemas.btproj。

启用 BTS ISAPI 筛选器

  1. 单击“开始”,指向“所有程序”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”

    提示

    根据操作系统,“管理工具开始”菜单选项可能不可用。 在这种情况下,单击“开始”,单击“运行”,然后输入inetmgr以打开INTERNET INFORMATION SERVICES (IIS) 管理器。

  2. 选择根 Web 服务器条目并在 功能视图中,双击 “处理程序映射 ”,然后在 “操作 ”窗格中单击“ 添加脚本映射”。

    注意

    在 Web 服务器级别配置脚本映射将导致此映射适用于所有子网站。 如果要限制到特定网站或虚拟文件夹的映射,请选择目标网站或文件夹,而不是 Web 服务器。

  3. 在“添加脚本映射”对话框中,输入BtsHttpReceive.dll“请求路径”字段。

  4. “可执行文件”字段中,单击省略号 (...) 按钮,并浏览到\Program Files (x86) \Microsoft BizTalk Server <VERSIONHttpReceive>。 选择BtsHttpReceive.dll并单击“ 确定”。

  5. “名称”字段中输入BizTalk HTTP Receive,然后单击“请求限制”。

  6. 在“ 请求限制 ”对话框中,选择“ 谓词 ”选项卡,然后选择 以下谓词之一。 输入 POST 为谓词。

  7. “访问 ”选项卡上,选择“ 脚本 ”,然后单击“ 确定”。

  8. 单击 “确定 ”,当系统提示允许 ISAPI 扩展时,单击“ ”。

配置 Contoso 网页

  1. 在 IIS 管理器中,右键单击 “应用程序池 ”,然后选择“ 添加应用程序池”。

  2. 在“添加应用程序池”对话框中,输入“名称”中的 BizTalkAppPool,然后在.NET Framework版本下拉列表中选择.NET Framework V4.0.30210。 单击“确定”。

    注意

    版本号可能因计算机上安装的 .NET Framework 4.5 版本而异。

  3. 选择应用程序池,在功能视图中选择 BizTalkAppPool,然后单击“操作”窗格中的高级设置

  4. 在“高级设置”对话框中,选择“标识”,然后单击省略号 (...) 按钮。

  5. “应用程序池标识 ”对话框中,选择“ 自定义帐户 ”,然后单击“ 设置”。

  6. 输入作为管理员组成员的用户帐户的用户名和密码,在“确认密码”中输入密码,然后单击“确定”三次以返回到 IIS 管理器。

  7. 在 IIS 管理器中,打开 “站点” 文件夹。 右键单击 “默认网站” 节点,然后选择“ 添加应用程序”。

  8. “添加应用程序”对话框中,在“别名”文本框中输入 Contoso,然后单击“选择”。

  9. 在“ 选择应用程序池 ”对话框中,选择 BizTalkAppPool ,然后单击“ 确定”。

  10. 对于物理路径,请单击省略号 (...) 按钮并浏览到 \Program Files (x86) \Microsoft BizTalk Server <VERSIONHttpReceive>。

  11. 单击“测试”设置,并验证“测试连接”对话框中是否未显示任何错误。 单击“关闭”,然后单击“确定”

  12. 在 IIS 管理器中,选择 Contoso 虚拟目录,然后在 功能视图中双击 “身份验证”。

  13. “身份验证”页中,选择“匿名身份验证”并验证状态是否已启用。 如果状态为“已禁用”,请单击“操作”窗格中的“启用”。

指定虚拟目录不受Windows SharePoint Services管理

  1. 如果计算机上安装了Windows SharePoint Services,请单击“开始”,指向“所有程序”,指向“管理工具”,然后单击“SharePoint 3.0 管理中心”。

    注意

    如果用于设置演练的同一计算机上还安装了 Windows SharePoint Server,则此过程是必需的。 在该情况下,您必须指定 IIS 虚拟目录不由 Windows SharePoint Server 托管。

  2. “管理中心 ”页上的 “管理中心”下,单击“ 应用程序管理”。

  3. “应用程序管理 ”页上,单击“ 定义托管路径”。

  4. 在“ 定义托管路径 ”页的 “添加新路径”下,在 “路径 ”文本框中,输入 Contoso。 在 “类型”下,单击“ 排除路径”,然后单击“ 确定”。

创建接收端口以通过 AS2 消息接收 EDI 并返回 MDN

  1. 在BizTalk Server管理控制台中,右键单击 BizTalk 应用程序 1 节点下的“接收端口”节点,指向“新建”,然后单击“请求-响应接收端口”。

  2. 命名接收端口,然后单击控制台树中的 “接收位置 ”。

  3. 单击 “新建”

  4. 为接收位置命名,选择“类型”的 HTTP,然后单击“配置”。

  5. 对于 虚拟目录和 ISAPI 扩展,请输入 /Contoso/BTSHTTPReceive.dll

  6. 选中“ 挂起失败的请求 ”复选框,然后单击“ 确定”。

  7. 对于 接收管道,请选择 AS2EDIReceive

  8. 对于 “发送管道”,请选择 “AS2Send”。

  9. 单击“确定”,然后再次单击“确定”。

  10. 在BizTalk Server管理控制台的“接收位置”窗格中,右键单击接收位置,然后单击“启用”。

创建发送端口以将 EDI 有效负载发送到本地文件夹

  1. 在Windows资源管理器中,创建一个名为EDI_to_Contoso的本地文件夹,以将 EDI 有效负载发送到该文件夹。

  2. 在BizTalk Server管理控制台中,右键单击“发送端口”,指向“新建”,然后单击“静态”One-Way“发送端口”。

  3. 在“ 发送端口属性 ”对话框中,将发送端口命名为 Send_Payload。 选择“文件类型”,然后单击“配置”。

  4. 在“ 文件传输属性” 对话框中,对于 “目标”文件夹,浏览到步骤 1 中创建 的EDI_to_Contoso 文件夹。 将 文件名 保留为 %MessageID%.xml。 单击“确定”。

  5. 对于 “发送管道 ”下拉列表,接受默认 PassThruTransmit

  6. 单击控制台树中的 筛选器 。 对于 属性,请输入 BTS。MessageType。 对于 运算符,请输入 ==。 对于“值”,请输入消息的消息类型。 http://schemas.microsoft.com/BizTalk/Edi/X12/2006#X12_00401_864

  7. 单击“确定”。

  8. 在BizTalk Server管理控制台的“发送端口”窗格中,右键单击发送端口,然后单击“开始”。

为 Fabrikam 创建一个参与方和业务配置文件

  1. 右键单击BizTalk Server管理控制台中的“参与方”节点,指向“新建”,然后单击“”。

  2. “名称 ”文本框中输入参与方的名称,然后单击“ 确定”。

    注意

    通过选择“Party OR”接收的本地 BizTalk 处理消息支持从此方发送消息复选框,可以指定所创建的参与方是针对同时托管BizTalk Server的同一组织。 基于此,在创建协议时,某些属性将启用或禁用。 但是,对于本演练,可以选中此复选框。

  3. 右键单击群名称,指向 “新建”,然后单击 “业务配置文件”。

  4. 在“配置文件属性”对话框中的“常规”页上,在“名称”文本框中输入Fabrikam_Profile

    注意

    创建群时,还会创建配置文件。 可以重命名和使用该配置文件,而不是创建新的配置文件。 若要重命名配置文件,请右键单击配置文件并选择“ 属性”。 在 “常规” 页中,指定配置文件的名称。

为 Contoso 创建一个参与方和业务配置文件

  1. 右键单击BizTalk Server管理控制台中的“参与方”节点,指向“新建”,然后单击“”。

  2. “名称 ”文本框中输入参与方的名称,然后单击“ 确定”。

    注意

    通过选择“Party OR”接收的本地 BizTalk 处理消息支持从此方发送消息复选框,可以指定所创建的参与方是针对同时托管BizTalk Server的同一组织。 基于此,在创建协议时,某些属性将启用或禁用。 但是,对于本演练,可以选中此复选框。

  3. 右键单击群名称,指向 “新建”,然后单击 “业务配置文件”。

  4. 在“配置文件属性”对话框中的“常规”页上,在“名称”文本框中输入Contoso_Profile

    注意

    创建群时,还会创建配置文件。 可以重命名和使用该配置文件,而不是创建新的配置文件。 若要重命名配置文件,请右键单击配置文件并选择“ 属性”。 在 “常规” 页中,指定配置文件的名称。

在两个业务配置文件之间创建 AS2 协议

  1. 右键单击 Fabrikam_Profile,指向 “新建”,然后单击“ 协议”。

  2. 在“ 常规属性” 页中,对于 “名称 ”文本框,输入协议的名称。

  3. “协议 ”下拉列表中选择 AS2

  4. “第二个合作伙伴 ”部分中,从 “名称 ”下拉列表中选择 “Contoso”。

  5. “第二个合作伙伴 ”部分中,从 “配置文件 ”下拉列表中选择 Contoso_Profile

    你会注意到,“ 常规 ”选项卡旁边添加了两个新选项卡。每个选项卡用于配置单向 AS2 协议。

  6. 在“常规”选项卡上的“常规属性”页上的“公共主机设置”部分中,选择“打开报告”。

  7. Fabrikam-Contoso> 选项卡上执行以下任务。

    1. “标识符 ”页上,输入 AS2-FromAS2-To 的值。 对于 AS2-From,请输入 Fabrikam。 对于 AS2- To,请输入 Contoso
  8. Contoso-Fabrikam> 选项卡上执行以下任务。

    注意

    在本演练中,我们在选项卡中指定所需的值,以便成功创建协议。 若要成功创建协议,这两个单向协议选项卡都必须为 AS2_FromAS2-To 定义值。

    1. “标识符 ”页上,输入 AS2-FromAS2-To 的值。 对于 AS2-From,请输入 Contoso。 对于 AS2- To,请输入 Fabrikam
  9. 单击“应用”。

  10. 单击 “确定” 。 新添加的协议列在“参与方和业务配置文件”窗格的“协议”部分。 默认情况下,启用新添加的协议。

在两个业务配置文件之间创建 X12 协议

  1. 右键单击 Fabrikam_Profile,指向 “新建”,然后单击“ 协议”。

  2. 在“ 常规属性” 页中,对于 “名称 ”文本框,输入协议的名称。

  3. “协议 ”下拉列表中选择 “X12”。

  4. “第二个合作伙伴 ”部分中,从 “名称 ”下拉列表中选择 “Contoso”。

  5. “第二个合作伙伴 ”部分中,从 “配置文件 ”下拉列表中选择 Contoso_Profile

    你会注意到,“ 常规 ”选项卡旁边添加了两个新选项卡。每个选项卡用于配置单向 X12 协议。

  6. 在“常规”选项卡上的“常规属性”页上的“通用主机设置”部分中,选择“打开报告”,然后选择“存储”消息有效负载进行报告

  7. Fabrikam-Contoso> 选项卡上执行以下任务。

    1. “交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值对应的限定符和标识符字段 (ISA5ISA6ISA7ISA8) 的值。

      注意

      BizTalk Server需要发送方和接收方的限定符和标识符字段才能执行协议解析。 它将在交换标头中将 ISA5ISA6ISA7ISA8 的值与协议属性中的值匹配。 BizTalk Server还将通过匹配发送方限定符和标识符 (来解决协议,而无需接收方限定符和标识符) 。 如果BizTalk Server无法解决协议,它将使用回退协议属性。

      注意

      在本演练中,将 ISA5 设置为 ZZISA6 设置为 7654321ISA7ZZ,将 ISA8 设置为 1234567

    2. “交换设置”部分下的“验证”页上,确保未选中“检查重复的 ISA13”选项。

      注意

      清除 “检查重复 ISA13 ”属性后,便可以接收同一消息的多个实例。

    3. 如果使用随附BizTalk Server的标准架构之一,请在事务集设置部分下的“本地主机设置”页上,选择要用于处理传入交换的架构的命名空间。

      使用此选项 要执行此操作
      默认 选中列中的复选框
      目标命名空间 选择 http://schemas.microsoft.com/BizTalk/EDI/X12/2006

      注意

      设置属性可让BizTalk Server确定要用于处理传入 850 交换的架构。 如果某一交换的 GS02 和 ST01 的值是在网格行上输入的,则将使用同一行的目标命名空间来确定要使用的架构。

  8. Contoso-Fabrikam> 选项卡上执行以下任务。

    注意

    在本演练中,我们在选项卡中指定所需的值,以便可以成功创建协议。 若要成功创建协议,两个单向协议选项卡都必须为 ISA5ISA6、ISA7ISA8 定义值。

    1. “交换设置”部分下的“标识符”页上,输入与测试消息中这些标头字段的值相对应的限定符和标识符字段的值 (ISA5、ISA6ISA7 和 ISA8) 。

      注意

      在本演练中,将 ISA5 设置为 ZZISA6 设置为 1234567ISA7ZZ将 ISA8 设置为 7654321

  9. 单击“应用”。

  10. 单击 “确定” 。 新添加的协议列在“各方和业务配置文件”窗格的“协议”部分。 默认情况下,启用新添加的协议。

测试演练

本部分提供有关如何测试演练的信息。

测试解决方案

  1. 在Visual Studio中,在 \Program Files (x86) \Microsoft BizTalk Server <VERSIONSDK>\AS2 Tutorial\Sender 文件夹中打开 Sender.csproj 项目。

  2. 在 HttpSender.cs 中,注释掉以下行(紧接着 //请求异步 MDN 注释行):

    Stream sr = new FileStream(getBizTalkInstallPath() + @"SDK\AS2 Tutorial\X12_00401_864.edi", FileMode.Open, FileAccess.Read);  
    
  3. 取消对以下行(紧接着 //请求同步 MDN 注释行)的注释:

    Stream sr = new FileStream(getBizTalkInstallPath() + @"SDK\AS2 Tutorial\X12_00401_864-Sync.edi", FileMode.Open, FileAccess.Read);  
    
  4. 生成此项目。

  5. 在Windows资源管理器中,移动到 \Program Files (x86) \Microsoft BizTalk Server <VERSIONSDK>\AS2 教程。 在记事本中打开 X12_00401_864-Sync.edi。 删除用于定义 Disposition-Notification-Options 头的行,然后保存该文件。

  6. 打开命令窗口。 移动到 \Program Files (x86) \Microsoft BizTalk Server <VERSIONSDK>\AS2 Tutorial\Sender\bin\debug。 运行 Sender.exe

    注意

    在此实例中运行 Sender.exe 将把消息 X12_00401_864-sync.edi 发送到 Contoso 虚拟目录(BTS HTTP 接收位置)。

  7. 验证命令窗口中显示出 MDN。 验证在 MDN 中,AS2-From 是 Contoso,AS2-To 是 Fabrikam。

    注意

    Sender.exe 在命令窗口中显示该 MDN。

  8. 打开创建的 Contoso 本地文件夹,将 EDI 有效负载发送到 (\EDI_to_Contoso) 。 验证该文件夹中有一个 .XML 文件。 打开该 XML 文件并验证它包含有一个 864 事务集。

  9. 在 记事本中打开测试消息 X12_00401_864-Sync.edi,并验证 \EDI_to_Contoso 本地文件夹中输出消息中的事务集是否对应于 X12_00401_864-Sync.edi 输入消息中的事务集。

另请参阅

开发和配置 BizTalk Server AS2 解决方案