【发布时间】:2012-09-18 13:20:54
【问题描述】:
这个真的很奇怪,我不明白为什么一种方法有效而另一种方法无效。
我在本地计算机商店中有一个证书和一个指纹。该应用程序在发出 HTTP Web 请求时使用该证书,因此我需要获取它。我想将指纹作为 AppSetting 值存储在 web.config 中。每当我提取 AppSetting 值并使用它来查找证书时,它都找不到它。但是,如果我创建一个局部变量(类变量,只读,常量,等等)并通过它进行搜索,它就可以工作。我已经完成了 String.Compare() 两个值是 exactly 相同。是什么赋予了?我试图查看 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
【问题讨论】:
-
为什么要把字符串和
ignoreCase=True比较?尝试另一个重载String.Compare(String, String, StringComparision)并使用StringComparision.InvariantCulture调用它。
标签: .net vb.net certificate app-config