ฉันประสบปัญหาต่อไปนี้
ฉันเรียกใช้รหัสต่อไปนี้
var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);
ในสองกระบวนการ หนึ่งในกระบวนการทำงานภายใต้LOCAL_SYSTEM
และมีรหัสนี้สำเร็จ อีกอันหนึ่งทำงานภายใน 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
ดังนั้นฉันจึง Googled เล็กน้อยและพบคำตอบสำหรับคำถามที่คล้ายกันนี้ ฉันพยายามเปิดใช้งานLoadUserProfile
สำหรับพูลแอปพลิเคชันและใช้งานได้ในขณะนี้
ปัญหาคือฉันไม่เข้าใจว่าจะเกิดอะไรขึ้นเมื่อตั้งค่าไว้LoadUserProfile
และผลที่ตามมาที่อาจเกิดขึ้น ฉันหมายความว่าถ้ามันเป็นสิ่งที่ "ดี" แล้วทำไมมันถึงไม่ "เปิด" โดยปริยายแล้วทำไมมันถึงอยู่ที่นั่นล่ะ?
จะเกิดอะไรขึ้นเมื่อฉันตั้งค่าLoadUserProfile
ในกลุ่ม IIS และจะมีผลเสียอะไรบ้าง
new X509Certificate2(binaryData, password, X509KeyStorageFlags.MachineKeySet)
ให้ไม่จำเป็นต้องใช้โปรไฟล์ผู้ใช้