在C#/。NET Core中使用SAP DI API的问题

2020-08-17 13:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在与我合作的公司的一个项目中,我...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在与我合作的公司的一个项目中,我们有一个用C#编写的服务器应用程序,目标是.NET Core 2.2。 现在,该应用程序必须访问数据的现有数据库,该数据库属于我们的客户使用的SAP B1的现有安装。 首选的方法似乎是通过DI API。
我们的客户为我们提供了DI API和SAP B1 SDK的安装文件,并且已经获得一个程序的许可证。 最好在不同的物理服务器上运行我们的服务器应用程序(比运行B1和数据库的服务器)。 两台服务器均在Windows Server 2012上运行,并由我们的客户维护。 我目前正在尝试在运行Windows Server 2016的服务器上运行开发环境。

尝试使此设置正常运行有两个问题,第二个问题很可能是第一个问题的原因:
* SDK已安装在我们的开发服务器上,我们可以从库SAPBusinessOneSDK中引用SAPbobsCOM .dll并访问一些静态属性(例如,枚举SAPbobsCOM.BoDurations.du_Days)。 但是,一旦我们实例化Company对象(即SAPbobsCOM.Company c = new SAPbobsCOM.Company();),应用程序就会恰好在该行崩溃。 调试显示System.Runtime.InteropServices.COMException(0x80040154):由于以下错误,检索具有CLSID {632F4591-AA62-4219-8FB6-22BCF5F60090}的组件的COM类工厂失败:80040154未注册类(HRESULT的异常: 0x80040154(REGDB_E_CLASSNOTREG)。 在客户的目标服务器(未运行SAP B1的目标服务器)上运行已编译的测试程序时,也会发生同样的情况。
*在我们的开发服务器上安装DI API完全失败。 错误消息显示:"安装将终止;项目先决条件的安装在正确的位置不存在"。 安装程序在日志文件中最后一行说:"错误:先决条件安装失败,返回值:1603"
很明显,某些东西没有正确安装/设置。 由于SAP提供的文档非常明确地说明了如何设置这样的应用程序,因此我们目前只限于如何使数据库访问起作用。


旁边的注释:
访问运行B1的服务器并在那里运行我们的服务器应用程序并非不可能。 但是(如果可以实现),我们希望如上所述将服务器应用程序运行在专用服务器上。

所以问题是:如何正确设置它?
更准确地说:如何安装DI API? 第一个问题大概与第二个问题有什么关系,如果与第二个问题无关:如何解决第一个问题? (如SAP的文档和代码示例所建议的)是否有可能在与运行B1的物理服务器不同的物理服务器上运行使用DI API的应用程序?


任何建议将不胜感激!

3条回答
Cikesha
2020-08-17 14:20

REGDB_E_CLASSNOTREG是未安装正确的DI API时的典型错误。

在开发和构建项目时,应将SAPBusinessOneSDK.dll视为DI API COM的接口。

将具有匹配平台(x86/x64)的DI API安装到.NET程序中。
请注意.NET项目的"构建"选项卡中的"首选32位"选项

一周热门 更多>