我遇到了这里描述的类似问题。这是一个.NET Core 3.1应用程序,在Azure应用程序服务中作为Azure WebJob运行。根据上面链接中的讨论,我认为这是目录中文件计数的问题,我很难弄清楚哪个目录已满。Kudu门户网站上的环境页面显示了这一点,基本上似乎不是一个整体磁盘空间问题——
D:home usage: 57,344 MB total; 56,795 MB free
d:local usage: 11,264 MB total; 10,683 MB free
我也确实研究了上述链接中提到的路径,但没有取得多大成功。在我尝试相关问题中建议的代码修复之前,有没有办法弄清楚哪条路径是违规的?
[08/02/2020 09:20:53 > 4708f0: INFO] Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: There is not enough space on the disk.
[08/02/2020 09:20:53 > 4708f0: INFO] at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
[08/02/2020 09:20:53 > 4708f0: INFO] at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
[08/02/2020 09:20:53 > 4708f0: INFO] at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
[08/02/2020 09:20:53 > 4708f0: INFO] at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
除非PFX加载了X509KeyStorageFlags.EphemeralKeySet
,否则私钥材料将写入磁盘。具体位置取决于PFX中的信息,但99.99%的PFX负载中使用的目录记录在https://learn.microsoft.com/en-us/windows/win32/seccng/key-storage-and-retrieval#key-目录和文件。
(在0.01%的情况下,PFX内容表示要将密钥加载到使用其他位置的其他存储提供商中。(
或者,除非您正在执行为数不多的需要命名密钥的操作之一,否则在加载PFX时请指定EphemeralKeySet
。