You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Cryptography.Cng能否在Azure Functions中正常运行?

问题根因

你遇到的PlatformNotSupportedException和Azure Functions Windows环境的沙箱限制直接相关,和.NET Core 3.1的API支持度无关:

  • 本地控制台应用运行在当前用户的完整权限上下文,可正常访问Windows CNG加密接口的所有能力
  • Windows环境下的Azure Functions(尤其是消费计划、弹性Premium计划)默认运行在App Service沙箱中,沙箱默认禁用了对CNG密钥持久化存储、部分底层加密操作的访问权限,即便官方文档标注ECDiffieHellmanCng支持.NET Core 3.1,沙箱限制也会导致API调用失败

解决方案

  • 优先使用跨平台的ECDiffieHellman抽象类工厂方法创建实例,不要直接实例化ECDiffieHellmanCng实现类:
    // 替换掉 new ECDiffieHellmanCng() 写法
    using var ecdh = ECDiffieHellman.Create(ECCurve.NamedCurves.nistP256);
    
    .NET Core 3.1在Windows环境下会自动适配Cng实现,同时规避直接调用Cng实现类触发的沙箱权限校验,只要你不需要访问持久化存储的密钥,该写法可以在沙箱中正常运行。
  • 如果你必须使用ECDiffieHellmanCng的专属API,将Functions的托管计划更换为Windows专用App Service计划,开启Always On配置,专用计划的沙箱限制远低于消费计划,可正常调用CNG相关接口。
  • 避免在ECDiffieHellmanCng构造参数中指定需要持久化存储的密钥,尽量使用临时(ephemeral)密钥重载,临时密钥不需要读写系统/用户密钥存储,不会触发沙箱限制。
  • 若条件允许,将项目升级到.NET 6及以上版本,更高版本的.NET运行时对Azure Functions沙箱的加密API适配更完善,可避免大量兼容性问题。

内容的提问来源于stack exchange,提问作者Bon Macalindong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:54:10