1

このコードを 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 アプリから何かをスローして、それらを読み取れない理由を教えてくれると助かりますが、そうではありません。それで、私がどこかに設定する必要があるいくつかの権限はありますか?

4

2 に答える 2

1

代わりにTrustedPeopleストアに証明書を配置しましたが、正常に機能します。

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine);

于 2013-02-25T10:06:15.930 に答える