CngKey System.Security.Cryptography.CryptographicException 系统找不到Azure上指定的文件

CngKey System.Security.Cryptography.CryptographicException The system cannot find the file specified on Azure

我尝试从这个代码生成密钥

CngKey key = CngKey.Import(Convert.FromBase64String(privateKey), CngKeyBlobFormat.Pkcs8PrivateBlob);

它在本地运行良好,但当我在我的 Azure 应用服务中部署时。 它给了我这个错误:

System.Security.Cryptography.CryptographicException: 系统找不到指定的文件。 在 System.Security.Cryptography.NCryptNative.ImportKey(SafeNCryptProviderHandle 提供商,Byte[] keyBlob,字符串格式) 在 System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, String curveName, CngKeyBlobFormat 格式, CngProvider 提供者)

我在配置中添加 WEBSITE_LOAD_USER_PROFILE 值为“1”,但没有任何区别。

谢谢

如果 WEBSITE_LOAD_USER_PROFILE = 1 对您不起作用。这是同一问题的解决方法:

  • 在 portal.azure.com
  • 中打开您的 Azure 应用服务(Azure 网站)边栏选项卡
  • 转到“应用程序设置”页面
  • 滚动到应用程序设置
  • 添加一个新的输入键:WEBSITE_LOAD_CERTIFICATES,并为其提供一个虚拟(伪造的、随机生成的)值。

查看以下类似问题的链接以供参考:

我通过在 Azure 配置中添加 WEBSITE_LOAD_USER_PROFILE = 1 将计划服务从免费升级到基本。

问题是当应用服务免费时它使用共享 VM 但当我将我的应用服务定价升级到基本时它使用私有 VM。

这个问题不仅出现在 Azure 上,我的 VPS 也遇到了同样的问题,这个答案救了我的命:

X509Certificate Constructor Exception

干杯, 尼克