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

How to use msCrypto in Azure Function? (Error when connecting to SAP HANA over SSL from Azure Function)

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

我的理解是,当 Windows 系统上的 运行 时,数据库驱动程序默认使用 msCrypto 作为加密提供程序。 Should/can msCrypto 在没有专用主机的情况下在 Azure Function 中工作?如果是这样,我需要做什么才能使其正常工作?

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

简而言之,它归结为 SAP HANA 驱动程序尝试使用信任库,即使在连接字符串中使用了 sslValidateCertificate=false 设置。还发现微软方面默认不创建空存储有点令人困惑。