尽管我的问题是一年多前提出的,但从未得到答案,但我想我可能已经找到了解决方法。当 Web 应用程序正在运行并将第二个 CAC 插入 PC 上的附加读卡器时,ActivClient 会读取卡并将证书放入存储中。所以我访问了商店并通过人的名字找到了证书:
enter code here
[HttpPost]
public ActionResult GetNewCardEdipi(string name)
{
//test multiple readers
X509Store keystore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
keystore.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
var clientCert = keystore.Certificates;
var certs = keystore.Certificates.Find(X509FindType.FindBySubjectName, name, false);
var cuser = certs[0];
var sub = cuser.Subject;
string[] strs = sub.Split(',');
string edi = strs[0].Substring(strs[0].LastIndexOf(".") + 1);
//end
return Json(edi);
}
这工作得很好。