X509Certificate2 вызывает сбой IIS


При создании экземпляра X509Certificate2(string, string) Мой процесс IIS просто аварийно завершает работу. Нет исключения .Net, нет ничего, кроме этого в моем журнале событий

Faulting application name: w3wp.exe, version: 8.0.9200.16384, time stamp: 0x50108835
Faulting module name: ntdll.dll, version: 6.2.9200.16420, time stamp: 0x505ab405
Exception code: 0xc0000374
Fault offset: 0x00000000000ea485
Faulting process id: 0x102c
Faulting application start time: 0x01ce10301e250c4d
Faulting application path: c:windowssystem32inetsrvw3wp.exe
Faulting module path: C:WindowsSYSTEM32ntdll.dll
Report Id: 5e55321c-7c23-11e2-93f9-00155d8a0f17
Faulting package full name: 
Я довольно ошеломлен и не знаю, с чего начать поиски. Когда я подключаю отладчик к процессу, я могу прорваться к этой строке, но когда я переступаю через нее, все это рушится.
_certificate = new X509Certificate2(pfxFile, pfxPassword);

Pfx-файл является допустимым путем, если я изменю его, я немедленно получу правильное исключение .Net PathNotFound.

Сервер-Windows 2012, запуск IIS8 и .Net 4.5.

Обновление
в этой статье описывается та же проблема, решение которой заключается в том, чтобы удостовериться, что идентификатор пула приложений имеетLoadUserProfile включен.

1 23

1 ответ:

У меня была аналогичная проблема, также на Windows Server 2012, который разбился IIS, при использовании

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable)

Это было исправлено путем изменения конструктора на

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)