Co dokładnie dzieje się, gdy ustawię LoadUserProfile w puli IIS?

Stałem wobec następującego problemu.

Używam następującego kodu

var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);

w dwóch procesach. Jeden z procesów działa w ramachLOCAL_SYSTEM i tam ten kod się powiedzie. Inny działa w IIS pod kontem użytkownika lokalnego należącego do lokalnej grupy „Użytkownicy” i pojawia się następujący wyjątek:

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

Więc trochę googlełem i znalazłemta odpowiedź na podobne pytanie. Próbowałem włączyćLoadUserProfile dla puli aplikacji i działa teraz.

Problem polega na tym, że nie rozumiem, co dokładnie się dzieje, kiedy ustawiamLoadUserProfile i jakie mogą mieć konsekwencje. To znaczy, jeśli jest to „dobra” rzecz, to dlaczego domyślnie nie jest „włączona” i po co tam jest?

Co dokładnie dzieje się, gdy ustawiamLoadUserProfile w puli usług IIS i jakie mogą mieć negatywne konsekwencje?

questionAnswers(1)

yourAnswerToTheQuestion