当我使用
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:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 5e55321c-7c23-11e2-93f9-00155d8a0f17
Faulting package full name:
我感到非常震惊,不知道从哪里开始寻找。当将调试器附加到该进程时,我可以中断在这一行,但是当跨过它时,整个程序就会崩溃。
_certificate = new X509Certificate2(pfxFile, pfxPassword);
pfxFile是一个有效的路径,如果我更改它,我会立即得到正确的.Net PathNotFound异常。
服务器是Windows 2012,运行IIS8和.Net 4.5。
更新
这篇文章描述了同样的问题,其中解决方案是确保App Pool身份验证启用了LoadUserProfile。