このコードを Web アプリケーションから実行すると、X509 証明書が表示されません。
var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
string thumbprint = WebConfigurationManager.AppSettings["CertificateThumbprint"];
if (string.IsNullOrWhiteSpace(thumbprint))
{
throw new ArgumentException("Please specify the X509 certificate thumbprint in the web configuration file.");
}
Certificate = store.Certificates
.Find(X509FindType.FindByThumbprint, thumbprint, true)
.OfType<X509Certificate2>()
.FirstOrDefault();
store.Close();
if (Certificate == null)
{
throw new ArgumentException("The specified X509 certificate has not been installed on this server.");
}
store.Certificates
デバッグすると、それが空であることがわかります。ただし、コンソール アプリでは問題なく動作します。Web アプリケーションで上記のコードを使用した例をオンラインで見たことがあるので、これは奇妙です。
コードがなんらかのアクセス許可の例外または Web アプリから何かをスローして、それらを読み取れない理由を教えてくれると助かりますが、そうではありません。それで、私がどこかに設定する必要があるいくつかの権限はありますか?