2011-12-16 59 views
6

這是一個真正的挑戰: 我已經在我的電腦上設置了IIS7.5,並開始開發一個網站。每晚我都在我的網絡服務器上備份它,贏得2008r2 sp1(所有更新)。它完美無瑕。IIS7應用程序池崩潰時讀取cookie

然而,我在跨應用程序池共享Cookie時遇到了一個巨大的問題。 www.example.com設置爲127.0.0.1,因此我可以在本地測試網站。它創建了cookie,但當我刪除HOSTS記錄時(指向Web服務器) - Web服務器上的應用程序池崩潰。它每次都會發生,並且可能必須對sessionID cookie執行一些操作,因爲沒有cookie就會導致崩潰!

日誌文件是:

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2 
Faulting module name: nlssorting.dll, version: 4.0.30319.239, time stamp: 0x4e182039 
Exception code: 0xc00000fd 
Fault offset: 0x0000000000001d7d 
Faulting process id: 0x9f8 
Faulting application start time: 0x01ccbbd76b7a443c 
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\nlssorting.dll 
Report Id: a9cfd0cf-27ca-11e1-bced-00215e5304da 

這是怎麼回事?

+0

你見過這個連接錯誤嗎? http://connect.microsoft.com/VisualStudio/feedback/details/665157/nlssorting-fault-crashes-iis – 2011-12-16 14:18:31

回答

0

ASP.NET auth cookie使用web.config中的machineKey設置進行加密和解密。如果你沒有它,它會在每次應用程序啓動時自動生成。將其設置爲固定值以避免應用程序重新啓動之間的Cookie失效是個不錯的主意。

我無法確定,但可能是asp.net會話cookie也依賴於此加密密鑰。我非常確定viewstate也在使用它(這就是爲什麼當您在應用程序由於不活動而關閉後啓動回發時,您會看到invalid-viewstate錯誤)。

所以,嘗試設置機器的鑰匙,看看它仍然發生。您可以使用IIS生成一個,並將其插入到web.config中的正確位置。