gpt4 book ai didi

c# - X509Certificate2 构造函数抛出磁盘空间不足

转载 作者:行者123 更新时间:2023-12-03 22:12:05 25 4
gpt4 key购买 nike

突然之间,无需部署或进行任何其他环境更改,我们就得到了

There is not enough space on the disk. at System.Security.Cryptography.CryptographicException.ThrowCryptographicException (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor (System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at [OUR CODE]

用这一行:

var certificateByes = Convert.FromBase64String(clientCertificateBody);
factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(certificateByes);

我正在努力了解在 Azure Web 应用程序的上下文中这会如何突然出现问题。我们上次部署是在 11 月 20 日,昨天开始抛出。此基本功能已经使用了几个月,没有出现任何问题。

我们之前确实在这方面遇到过麻烦,我们正在读取的字符串是从 keystore 中检索的,但同样,这里没有任何改变。

我读过有关不同类型的错误 herehere但我们的错误消息不同,而且几个月来一直运行良好。

这是否与应用程序运行的时间或填充某些临时存储位置的其他缓存问题有关?

最佳答案

这是我经过数小时的研究/调试后所知道的:

  • 我们遇到了逻辑错误,每次加载时都会创建一个新的 X509Certificate2 对象,而不是缓存它
  • 我们陷入了必须比我们需要的更频繁地创建这些证书的境地

一旦我们解决了这两个问题,并遵循 here 中的提示#5创建证书时,我们不再看到这些错误。作为引用,提示是不要从字节数组创建这些证书对象,因为临时文件是在幕后为您创建的,并且它们可能无法被清理。相反,我们正在做作者建议的事情:

var bytes = new byte[]{}; //byte array representing cert body
var file = Path.Combine(Path.GetTempPath(), "Cert" + Guid.NewGuid());
try
{
File.WriteAllBytes(file, bytes);
return new X509Certificate2(file, /* ...options... */);
}
finally
{
File.Delete(file);
}

关于c# - X509Certificate2 构造函数抛出磁盘空间不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53617491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com