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
?如果是这样的话,就是当该对象被释放时。不,没有重新启动的计算机工作正常,但在重新启动问题发生后,系统重新启动时它被释放了吗?在当前用户而不是本地计算机上安装证书对我来说很有效,但在本地计算机上安装会发生相同的错误。