2013-02-21 43 views
22

當新建一個X509Certificate2(string, string)的實例時,我的IIS進程只是崩潰。沒有的.NET異常,什麼都沒有,除了這在我的事件日誌X509Certificate2使IIS崩潰

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: 

Im相當愕然,不知道從哪裏開始尋找。當將調試器附加到進程中時,我能夠突破這一線,但是當它跨過它時,整個事情就會崩潰。

_certificate = new X509Certificate2(pfxFile, pfxPassword); 

pfxFile是一個有效的路徑,如果我改變它,我立即得到一個正確的.Net PathNotFound例外。

服務器是Windows 2012,運行IIS8和.Net 4.5。

更新
This article描述了一個解決方案,以確保應用程序池身份LoadUserProfile啓用了同樣的問題。

+0

FWIW時,也有類似的問題,也是Windows Server 2012中,墜毀IIS上,HTTP://計算器.com/questions/9259581 /我們的應用程序崩潰 - 如何找到導致崩潰的原因可能是邁向正確方向的一步。 – 2013-02-21 13:37:50

回答

32

我使用

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable) 

這是固定的,通過改變構造函數

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

我有完全相同的問題,您的解決方案也適用於我。我希望我能多次提出這個答案。非常感謝! – 2013-07-04 17:30:36

+2

@RodrigoSieiro我會繼續努力,幫助你克服這一點。我在使用Google Admin SDK服務帳戶時自己遇到了這個問題。 – 2014-06-16 16:03:05

+0

@maxp這個答案是我喜歡堆棧溢出的原因。 – CameraSchoolDropout 2014-06-25 04:11:16