现象:大量调用.p12证书时,C:ProgramDataMicrosoftCryptoRSAMachineKeys 文件夹变得越来越大。
调用代码:
X509Certificate2 x509 = new X509Certificate2(p12FullName, hfMchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
根据观察,这种实例化(X509Certificate2)调用的方式会使用MachineKeys 文件夹,不停的产生新文件。
有限的解决办法:
如果你只是用到p12证书的私钥或序列号,那么直接将私钥或序列号读取出来,存入变量、配置文件或数据库中。下次调用,直接使用提取好的私钥或序列号。
提取私钥:
X509Certificate2 x509 = new X509Certificate2(qdInfo.p12FullName, qdInfo.mchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); string xmlPrivateKey = x509.PrivateKey.ToXmlString(true);
提取序列号:
X509Certificate2 x509 = new X509Certificate2(p12FullName, hfMchId, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); string SerialNumber = x509.SerialNumber;
--