2011-12-16 104 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中的正确位置。