我有一个连接到SAP并运行查询的C# Azure函数。Sap.Data.Hana.Core.v2.1.dll
和libadonetHDB.dll
已经被添加到项目中,以允许它在Azure中运行(不需要安装驱动程序的服务器)。只要我的连接字符串中没有encrypt=true
,它就可以正常工作。然而,我需要让它与SSL一起工作,SSL在本地工作,但在Azure中不起作用。当在Azure中运行时,我得到以下错误:Connection failed (RTE:[1000013] The system cannot find the file specified
。
我的理解是,在Windows系统上运行时,数据库驱动程序默认使用msCrypto
作为加密提供程序。在没有专用主机的情况下,msCrypto
应该/可以在Azure函数中工作吗?如果是这样,我需要做些什么才能让它正常工作?
发布于 2021-10-13 23:17:48
找到了解决方案。缺少文件错误是由SAP HANA驱动程序无法找到默认msCrypto信任存储区引起的。似乎在托管Azure功能的App Service Plan中默认创建了non。因此,为了让它正常工作,我需要在App Service Plan中我们的一个函数的TLS/SSL设置下添加一个公共证书(猜测这也可以在计划本身上完成),然后删除它,只需添加它就会在磁盘上为App Service Plan创建信任存储文件。
简而言之,这归结为SAP HANA驱动程序尝试使用信任存储,即使在连接字符串中使用了sslValidateCertificate=false
设置。另外,微软默认情况下没有创建空存储,这也让人感到困惑。
https://stackoverflow.com/questions/69542489
复制