如何在Azure功能中使用msCrypto?(从Azure Function通过SSL连接到SAP HANA时出错)



我有一个C#Azure函数,它连接到SAP HANA并运行查询。Sap.Data.Hana.Core.v2.1.dlllibadonetHDB.dll已添加到项目中,使其能够在Azure中运行(无需安装驱动程序的服务器)。只要我在连接字符串上没有encrypt=true,这就可以正常工作。然而,我需要让它与SSL一起工作,SSL可以在本地工作,但不能在Azure中工作。在Azure中运行时,我收到以下错误:Connection failed (RTE:[1000013] The system cannot find the file specified

我的理解是,当在Windows系统上运行时,数据库驱动程序默认使用msCrypto作为加密提供程序。msCrypto是否应该/可以在没有专用主机的情况下在Azure Function中工作?如果是这样的话,我需要做些什么才能让它发挥作用?

找到了解决方案。丢失的文件错误是由于SAP HANA驱动程序找不到默认的msCrypto信任存储引起的。似乎在托管Azure功能的应用程序服务计划中默认创建了非。因此,为了让它发挥作用,我需要在应用服务计划中的一个功能上添加TLS/SSL设置下的公共证书(猜测它也可能在计划本身上完成),然后删除它,只需添加它就可以在磁盘上为应用服务计划创建信任存储文件。

简而言之,这归结为SAP HANA驱动程序试图使用信任存储,即使在连接字符串中使用了sslValidateCertificate=false设置。此外,微软方面默认不会创建任何空存储,这让人有些困惑。

最新更新