118

次の問題に直面しました。

次のコードを実行します

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、どのような悪影響が生じる可能性がありますか?

4

1 に答える 1