次の問題に直面しました。
次のコードを実行します
var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);
2つのプロセスで。プロセスの 1 つが実行されLOCAL_SYSTEM
、そこでこのコードは成功します。もう 1 つは、"Users" ローカル グループに属するローカル ユーザー アカウントで IIS 内で実行され、そこで次の例外が発生します。
System.Security.Cryptography.CryptographicException
Object was not found.
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
//my code here
だから私は少しグーグルで、一種の同様の質問に対するこの答えを見つけました。LoadUserProfile
アプリケーション プールを有効にしようとしましたが、現在は機能しています。
問題は、設定したときに正確に何が起こり、それLoadUserProfile
がどのような結果をもたらすかがわからないことです。それが「良い」ことなら、なぜデフォルトで「オン」にならないのですか?
IIS プールに設定すると正確には何が起こりLoadUserProfile
、どのような悪影響が生じる可能性がありますか?