• 【SAP】.Net 4.5~4.8 调用SAP connector for dotnet 3.0


    官方指导

    https://docs.microsoft.com/zh-cn/azure/logic-apps/logic-apps-using-sap-connector#ise-prerequisites

    PS: 不愧是世界第一的ERP,连微软官方都写操作指南,而且提供Azure支持……

    Step 1

    下载并安装 SAP Connector for dotnet 3.0

    安装时,可以选择只解压出dll,或者安装并注册到GAL,对于部署机,建议选择后者,开发机解压拿到dll即可。

    安装后,开发相关的dll主要是这些:

    注意,由于SAP官方链接下载是需要客户账户的,所以此处请联系你的业主~

    • 有些文章说需要安装客户端,其实不用。重要的是这个connector。 如果安装客户端,在bin目录里应该也能找到。
    • 关于版本,我始终是秉承有最新用最新的,否则因为某个第三方调用限制你整个框架的版本,并不划算。
    • 根据SAP官方的说明,最新版本的3.0.22是由.Net 4.0 和2.0两个版本支持的,但是4.0的x86和x64版本有一定的功能差异,x86是最全的。因此推荐你的应用程序使用32位运行
    • 按照微软自己的文档,.Net 4.5~4.8 均可以支持这个版本。

    Step 2

    写测试代码,运行项目。

    • 首先肯定测试编译,我这里只拷了以上四个dll到bin目录并没有通过。查了一些说法,说要求win7的系统环境,直接在win7下编译了一次,通过。

    但是我的部署目标是win Server2016,在win7下编译通过后,移植肯定也不能用。疯狂翻博客后得到这么一些观点:

    • 某个SAP的客户端测试程序是编译后win10可用的
    • ASP.Net 项目提示找不到sapnco.dll依赖,解决方案是安装vc++2005
    • VC++2010也行

    我走的弯路是这些:

    • 在win7的环境下编译,尝试整个移植到win10 x64机器上运行
    • 解决win10 1903后系统不支持安装vc++ 2005方案
    • 安装vc++2010
    • win7 下编译的独立进程在win7的跳板机上运行,主服务RPC调用。

    既然是弯路,肯定都没成功。虽然SAP贵为世界第一ERP,相关博客也意外的多,但是毕竟环境是比较早期的(客户的是02年上线的,操作系统竟然还可见win2000);

    最接近成功的尝试是win7跳板环境。

    我觉得太!不!优!雅!了

    Step 3

    既然是环境问题,总是能通过逆向依赖解决嘛。而且某个客户端测试工具可以在win10下运行这条信息,始终让我坚信这个问题是有解的!

    Dependency工具扫描会给出大量的系统api调用,干扰检查依赖。又找工具吧,发现竟然VS自己就提供了极佳的辅助工具 —— 【VS DumpBin

    测试!

    分别使用dumpbin 工具检查了四个SAP的dll,结果如下:

    不熟悉系统dll的话,一个笨办法,通过search everything 逐个检查系统中有没有。 如果有且在系统GAL里,那就跳过。这样一来,最终锁定了这么几个dll:

    • MSVCR100.dll

    事实上,这个依赖是VC++2010的。至于前边测试的VC++2010安装后没有通过,最终确定是x86和x64的问题。

    使用DependencyWalker 检查后会发现大量的Windows7 系统依赖,但微软官方说法是.Net Framework 4.0-4.8均支持,因此可以锁定问题到编译层面。

    Step 4

    直接给编译目录拷贝了MSVCR100.dll(x86)及四个SAP依赖,测试程序在x64下编译成功,并且运行时调用正确的报出了sap的异常信息。

    解决了编译问题,我的系统是ASP.Net的,还需要解决部署问题。

    前边说过,由于x86版的sap connector支持功能更完全,所以系统编译的时候需要指定平台为x86. iis Express测试成功后,部署到iis环境上时,需要注意指定对应的应用程序池为 【允许32位应用程序】

  • 相关阅读:
    数据类型转换(日期格式转换)
    TextArea控件实时计算总字数,总行数,和每行显示的最大字数
    Java--->判断IP和端口是否可连接
    JavaFX校验IP和端口的合法性
    JavaFX与NetBeans开发工具的一些总结
    Web Service深度剖析
    Spring中AOP和IOC深入理解
    Spring aspect 两种方式实现五种增强
    Struts2错题总结
    Hibernate检索方式和Criteria查询的讲解
  • 原文地址:https://www.cnblogs.com/DannielZhang/p/14631640.html
Copyright © 2020-2023  润新知