Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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# 电脑重启后';系统.安全.加密.加密例外';:键集不存在_C#_X509certificate_Private Key_System.security - Fatal编程技术网

C# 电脑重启后';系统.安全.加密.加密例外';:键集不存在

C# 电脑重启后';系统.安全.加密.加密例外';:键集不存在,c#,x509certificate,private-key,system.security,C#,X509certificate,Private Key,System.security,我使用以下代码对数据进行签名: RSACryptoServiceProvider csp; X509Store my = new X509Store(StoreName.My, StoreLocation.LocalMachine); my.Open(OpenFlags.ReadOnly); foreach (X509Certificate2 cert in my.Certificates) {

我使用以下代码对数据进行签名:

        RSACryptoServiceProvider csp;

        X509Store my = new X509Store(StoreName.My, StoreLocation.LocalMachine);

        my.Open(OpenFlags.ReadOnly);

        foreach (X509Certificate2 cert in my.Certificates)
        {
            if (cert.Subject.Contains(certSubject))
            {
                csp = (RSACryptoServiceProvider)cert.PrivateKey;
            }
        }
        csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA256"));

在将证书安装到本地计算机后的第一次工作正常,但当我尝试在计算机重新启动后进行签名时,它会引发异常。可能的原因是什么,请帮忙。

我也有同样的问题。在我的帐户中运行的IIS Express能够在我在本地计算机上导入证书的当天访问该证书的私钥,但在重新启动后无法访问。我能够修复的方法是在certlm控制台中明确授予我的帐户完全权限(即使我的帐户已经在本地administrators组中,该组对该私钥拥有完全权限)。

代码中的任何地方是否设置了类似
csp.PersistKeyInCsp=false
?如果是这样的话,就是当该对象被释放时。不,没有重新启动的计算机工作正常,但在重新启动问题发生后,系统重新启动时它被释放了吗?在当前用户而不是本地计算机上安装证书对我来说很有效,但在本地计算机上安装会发生相同的错误。