我遇到了以下问题。
我运行以下代码
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
所以我用谷歌搜索了一下,找到了一个类似问题的答案。我尝试启用LoadUserProfile
应用程序池,它现在可以工作了。
问题是我不知道设置时究竟会发生LoadUserProfile
什么以及可能产生的后果。我的意思是,如果它是一个“好”的东西,那么为什么它默认不“打开”,为什么它毕竟在那里?
当我在 IIS 池中设置时究竟会发生LoadUserProfile
什么,它会产生什么负面后果?