当我使用store.Certificates.Find时,遇到了问题。我正在使用安装有.NET 3.5的Windows server 2008 R2。该证书是通过安装得到的。
public static void AddCertificate(X509Certificate2 cert, StoreName name = StoreName.My, StoreLocation location = StoreLocation.LocalMachine)
{
var store = new X509Store(name, location);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
}
接下来,通过以下步骤找到证书:
string certThumbprint = "XXXX";
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, true);
if (certificates.Count == 0)
{
throw new ArgumentException("No certificate found with given thumbprint.");
}
异常根本不应该被抛出,但有时似乎会被抛出。它在100次运行中大约会抛出5次异常。
我已经谷歌过并发现了“不可见的第一个字符”问题,但在我的情况下,指纹确实是硬编码的。我没有从任何地方读取指纹。 使用.NET 4.5在Windows Server 2012上运行的代码从未给我带来任何问题。这只适用于具有NET 3.5的Windows服务器。我想知道为什么结果在WS2008R2上如此不一致?