C# X509扩展格式执行时间过长
我在巴西的发票系统中使用X509Extension类,因此我可以从X509Certificate2读取特定数据,并使用它执行一些功能 但在一些PC机上,当我毫无理由地执行extension.Format(true)方法时,会得到巨大的延迟(2+分钟) 我已经调查过的事情:C# X509扩展格式执行时间过长,c#,digital-certificate,x509certificate2,C#,Digital Certificate,X509certificate2,我在巴西的发票系统中使用X509Extension类,因此我可以从X509Certificate2读取特定数据,并使用它执行一些功能 但在一些PC机上,当我毫无理由地执行extension.Format(true)方法时,会得到巨大的延迟(2+分钟) 我已经调查过的事情: 清理临时文件 Internet Explorer中已清理的SSl缓存 重新安装证书 已重命名%APPDATA%/Microsoft/Protect/ID文件夹,以便系统将创建一个新文件夹 使用Process Hacker检查
- 清理临时文件
- Internet Explorer中已清理的SSl缓存
- 重新安装证书
- 已重命名%APPDATA%/Microsoft/Protect/ID文件夹,以便系统将创建一个新文件夹
- 使用Process Hacker检查是否存在可能需要太长时间的书写(没有)
public static class X509Certificate2Extensions
{
public static String ObterInformacaoDasExtensoes(this X509Certificate2 certificado,
String chaveExtensao)
{
String retorno = String.Empty;
foreach (X509Extension extension in certificado.Extensions)
{
String format = extension.Format(true); // <--- The delay is here
String[] linhas = format.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (String linha in linhas)
{
if (!linha.Trim().StartsWith(chaveExtensao))
continue;
String valorLinha = linha.Substring(linha.IndexOf('=') + 1);
String[] sequencia = valorLinha.Split(' ');
Int32 tamanho = sequencia.Length - 2;
byte[] bytes = new byte[tamanho];
for (int i = 0; i < bytes.Length; i++)
bytes[i] = Convert.ToByte(sequencia[i + 2], 16);
retorno = Encoding.UTF8.GetString(bytes);
break;
}
}
return retorno;
}
}
公共静态类X509Certificate2Extensions
{
公共静态字符串获取形式为CAODASEXTENSOES(此X509Certificate2 CertificateAdo,
字符串(chaveExtensao)
{
String=String.Empty;
foreach(certificado.Extensions中的X509Extension)
{
String format=extension.format(true);//我也是从巴西来的,我遇到的问题与您相同,我的问题的解决方案是插入机器的域。卸下机器并重新插入一切都恢复了正常操作
问题是完全一样的,所以我认为它可能也适用于你