Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# X509扩展格式执行时间过长_C#_Digital Certificate_X509certificate2 - Fatal编程技术网

C# X509扩展格式执行时间过长

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检查

我在巴西的发票系统中使用X509Extension类,因此我可以从X509Certificate2读取特定数据,并使用它执行一些功能

但在一些PC机上,当我毫无理由地执行extension.Format(true)方法时,会得到巨大的延迟(2+分钟)

我已经调查过的事情:

  • 清理临时文件
  • 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);//我也是从巴西来的,我遇到的问题与您相同,我的问题的解决方案是插入机器的域。卸下机器并重新插入一切都恢复了正常操作

问题是完全一样的,所以我认为它可能也适用于你