这个真的很奇怪,我无法弄清楚为什么一种方法有效而另一种方法无效。
我在本地计算机商店中有一个证书和一个指纹。该应用程序在发出 HTTP Web 请求时使用该证书,因此我需要获取它。我想将指纹作为 AppSetting 值存储在 web.config 中。每当我提取 AppSetting 值并使用它来查找证书时,它都找不到它。但是,如果我创建一个局部变量(类变量,只读,常量,等等)并通过它进行搜索,它就可以工作。我在两个值上都完成了 String.Compare() 是完全相同 的。是什么赋予了?我试着看一下 IL,看看我是否能看到一些时髦的东西,但什么也没有。
' This Works '
Dim certificateThumbprint As String = "D0650C9D31CF525D3C82153DCEBC3C3265D75FE3"
Dim certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, certificateThumbprint, False)
' This doesn't '
Dim appSettingcertificateThumbprint = System.Web.Configuration.WebConfigurationManager.AppSettings("CertificateThumbprint")
Dim certCollection2 = certStore.Certificates.Find(X509FindType.FindByThumbprint, appSettingcertificateThumbprint, False)
' Intermediate window shows that '
String.Compare(certificateThumbprint, appSettingcertificateThumbprint, True) = 0