我在两个不同的ASP.NET MVC网站中使用了以下代码。当我使用Visual Studio 2013在我的客户端工作站上运行代码时,X509Certificate2Collection" certificatesInUserStore"成功返回所有当前用户的客户端证书。这在IE和Firefox中成功发生。
但是,当我将应用程序部署到Web服务器时,不会收到任何个人证书。我使用带有passthrough的DefaultAppPool和带有应用程序池的第二个Web站点使用服务帐户来部署一个Web站点(无数据库后端)。 Web服务器是Windows Server 2012上的IIS 8.5,配置如下:
我希望有人可以帮我解决配置问题。提前谢谢。
public static X509Certificate2Collection GetClientCertificate()
{
x509Store UserStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
try
{
UserStore.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certificatesInUserStore = UserStore.Certificates;
int certCount = certificatesInUserStore.Count;
if (certCount == 0)
{
throw new Exception("No client certificates present.");
}
return certificatesInUserStore;
}
catch
{
throw new Exception("An error occurred attempting to retrieve client certificate");
}
finally
{
UserStore.Close();
}
}