मुझे निम्नलिखित समस्या का सामना करना पड़ा।जब मैं आईआईएस पूल के LoadUserProfile सेट करता हूं तो वास्तव में क्या होता है?
मैं दो प्रक्रियाओं में निम्न कोड
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
तो मैं थोड़ा Google पर और इसी तरह के सवाल का एक प्रकार के this answer पाया। मैंने एप्लिकेशन पूल के लिए LoadUserProfile
को सक्षम करने का प्रयास किया और यह अब काम करता है।
समस्या यह है कि जब मैं LoadUserProfile
सेट करता हूं और क्या परिणाम हो सकता है तो समस्या ठीक नहीं होती है। मेरा मतलब है कि अगर यह एक "अच्छी" चीज है तो यह डिफ़ॉल्ट रूप से "चालू" क्यों नहीं है और यह सब के बाद क्यों है?
आईआईएस पूल में LoadUserProfile
सेट करते समय वास्तव में क्या होता है और इसके नकारात्मक नतीजे क्या हो सकते हैं?
बस एक विचारधारा, यदि उपयोगकर्ता प्रोफ़ाइल लोड करना आपके लिए एक समस्या है, तो आप प्रमाण पत्र की अपनी लोडिंग को 'नए X509Certificate2 (बाइनरीडेटा, पासवर्ड, X509KeyStorageFlags' में बदल सकते हैं।MachineKeySet) 'इसलिए एक उपयोगकर्ता प्रोफ़ाइल की आवश्यकता नहीं है। – vcsjones