Что именно происходит, когда я устанавливаю LoadUserProfile пула IIS?

Я столкнулся со следующей проблемой.

Я запускаю следующий код

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 и какие последствия могут иметь последствия. Я имею в виду, если это «хорошая» вещь, то почему она не «включена» по умолчанию и почему она существует?

Что именно происходит, когда я устанавливаю LoadUserProfile в пуле IIS и какие отрицательные последствия могут иметь?

Я имею в виду, если это «хорошая» вещь, то почему она не «включена» по умолчанию и почему она существует?

IIS 6 никогда не загружал пользовательские профили. Я бы предположил, что по умолчанию это отключено, чтобы поддерживать согласованность поведения, и администратор должен отказаться от него.

Я попытался включить LoadUserProfile для пула приложений, и он работает сейчас.

Скорее всего, это связано с тем, что поставщик криптографических услуг Windows пытался хранить или загружать ключ для вашего сертификата в хранилище пользователей, а поскольку профиль недоступен, криптографический контекст недоступен. Обратите внимание, что параметр « Load User Profile применяется только к учетным записям пользователей. Учетные записи служб, такие как NETWORK SERVICE и ApplicationPoolIdentity, имеют специальную обработку.

Что именно происходит, когда я устанавливаю LoadUserProfile в пуле IIS

Ну, пользовательский профиль загружен. Сюда входит их криптографический магазин, переменные среды, такие как% TEMP% и другие.

То, что в конечном итоге сводится к тому, что LoadUserProfile вызывается IIS при запуске AppPool.

какие негативные последствия могут иметь это?

Он может нарушить совместимость с приложением, запущенным на IIS 6, который не загружал пользовательский профиль. Загружаются переменные среды. Например, когда Load User Profile имеет значение true, переменная среды% TEMP% – это C:\Users\AccountName\AppData\Local\Temp (например). Когда false, это C:\WINDOWS\Temp .

Interesting Posts

Excel: поиск списка строк в определенной строке с использованием формул массива?

Как настроить внешние репозитории yum?

Возврат StreamReader к началу

Веб-сайты Windows Azure переопределяют мои страницы ошибок 404 и 500 в моем приложении node.js

Как вы присоединяетесь к одной таблице дважды в mysql?

Макрос клавиатуры для изменения звукового устройства по умолчанию

Что это означает, когда файл заблокирован в Windows?

Диспетчер разделов C работает под управлением Windows 7 в два раза

Является ли законным сравнивать висячие указатели?

Различия между сокетами TCP и веб-сокетами, еще раз

Sublime Text: переместить окно сборки вправо

Почему производители процессоров перестали увеличивать тактовую частоту своих процессоров?

Как получить ширину экрана без (минус) полосы прокрутки?

Композитный первичный ключ или нет?

Eclipse успешно компилируется, но все же дает семантические ошибки

Давайте будем гением компьютера.