Georgia-Pacific乔治亚太平洋,是全球最大的造纸企业之一,成立于1927年,总部位于乔治亚州亚特兰大,在美国的主要业务为生产和销售手帕纸、木浆纸、卫生纸、包装、建筑材料等,以下统称为GP。随着GP公司业务的全球化发展,也给知行软件提供了实施GP EDI项目的契机。本文将主要介绍在GP EDI项目开展的过程中,进行连接测试时遇到的一系列问题及相应的解决方案。
GP与供应商传输的是X12标准报文,业务类型包括856(发货通知)、940(仓库装运订单)、944(仓库库存转移收据)、945(仓库装运通知)、846(库存查询/建议)、214(运输承运人装运状态)。为了实现与供应商的EDI直连,GP选用AS2传输协议向供应商发送856、940报文,并接收供应商发送的944、945、846、214报文。
AS2,即Applicability Statement 2是企业间使用超文本传输协议进行电子数据交换的一种规范,是早期版本 AS1,即Applicability Statement 1的扩展。AS2电子数据交换标准提供安全的多用途互联网邮件扩展,并使用HTTP或更安全的HTTPS在互联网上实现实时数据传输。其中加密和数字签名可以确保信息传递的安全性、完整性和隐私性。另一个重要特性是具有不可否认性,使得消息的预期接收者不能否认自己已经收到消息。通过简单的界面配置,用户就可以使用AS2 Connector和交易伙伴建立AS2连接,实现安全可靠的数据传输。
在与供应商建立AS2连接前,需要先确认双方的AS2配置信息完整且正确,主要包含的配置信息有:AS2 Identifier、URL、IP等。成功完成连接测试是实现EDI直连的第一步,有着不可或缺的重要作用。接下来主要介绍一下GP在与供应商进行连接测试时遇到的问题。
GP与供应商分别配置完成了AS2连接信息,确认无误后GP向供应商发送测试文件,供应商成功接收并向GP发送了测试文件,但是,却没有出现发送成功的提示,并显示报错信息:“不知道这样的主机”。于是,知行的实施工程师开始排查问题。在保证已准确无误地配置了GP提供的AS2配置信息后,初步排查GP提供的URL是否有问题,用ping、tracert命令去访问GP的IP地址,出现“请求超时”的错误。于是跟GP确认URL是否有更新,供应商的IP地址是否已加入到GP的访问信任列表,确认URL无误,IP地址已添加到白名单后,尝试用Ping命令解析GP的URL,得到一个IP地址,用这个IP地址替换掉AS2 Settings中URL里的域名,再次尝试发送测试文件,出现报错:“Internal Service Error”。由于HTTP报错信息难以直接定位原因,尝试使用抓包工具RawCap抓取IP数据包来分析原因。
首先,在本地安装好RawCap,可选取以下三种方式来抓取数据包:
1.打开RawCap,输入RawCap.exe 5 dumpfile.pcap; 2.打开RawCap,RawCap.exe IP地址 dumpfile.pcap; 3.在命令行中直接输入RawCap.exe。
需要注意的是,默认保存的文件名为dumpfile.pcap,使用Ctrl+C来停止抓包。此时可以在RawCap的同级目录下看到已保存的dumpfile.pcap文件,用wireshark打开,分析抓取到的数据包。
如上图所示,查看数据包信息得到:“Service Not Found. The request may have been sent to an invalid URL, or intended for an unsupported operation”。询问GP报错原因,再次确认URL提供是否正确。GP表示他们的其他供应商可以正常连接,且提供的URL没有任何问题。
此前的排查都是基于GP的配置或URL可能有问题进行的,排查无果后,着手从本地排查。
首先,怀疑可能是没有清理DNS缓存引起的。由于安装RSSBus时勾选了“Run as Windows Service”,查看任务管理器中RSSbus的详细信息发现,以Windows Service 去运行RSSBus的用户和使用浏览器去运行RSSBus的用户是不同的,这意味着Windows Service去运行的RSSBus用户的DNS解析可能会有问题。任务管理器界面如下图所示:
对此,在命令行窗口中输入命令:ipconfig /flushdns 刷新DNS解析的缓存。操作后问题依然存在。
查看Host文件,发现没有指定要访问的IP地址。在Host文件中添加GP的IP地址,重新发送测试文件,出现报错信息:“time out”,根据第一步排查的方法,在RSSBus中取消勾选“Run as Windows Service”,重新发送测试文件,显示成功。
您或许会有疑问,为什么此前用URL解析出来的IP地址配置在AS2 Settings里时,会出现“Internal Service Error”的报错呢?可能的原因是,IP地址只对应一个前端服务器,只是用来监听80端口,但IP地址对应的下一层可能有多种Service,仅仅用IP地址去访问的话无法确定具体要访问哪个Service,所以抓包信息中有报错:“Service Not Found”。
以上便是GP和供应商进行EDI直连AS2连接测试遇到的问题及解决思路。
注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。