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?