"数据执行保护"杀死(VS2008)Vista 64上的本地ASP.Net开发服务器(又名Cassini)
有时,我发现在调试ASP.Net应用程序(在Visual Studio 2008中编写,运行于64位Vista上)时,本地ASP.Net开发服务器(即" Cassini")停止响应。
经常出现一条消息,告诉我"数据执行保护(DEP)"已杀死WebDev.WebServer.exe
事件日志只是告诉我" WebDev.WebServer.exe已停止工作"
我听说这个"问题"在64位Vista上更经常出现,因为默认情况下DEP处于启用状态。因此,关闭DEP可能会"解决"问题。
但我想知道:
卡西尼号是否存在导致DEP终止进程的已知错误/情况?
另外,禁用数据执行保护的实际危险是什么?
解决方案
回答
唯一可以确定的方法是挖掘Cassini源,查看是否有任何区域在堆上生成代码,然后在不清除NX标志的情况下执行代码。
但是,为什么不使用IIS而不是这样做呢?
编辑:
禁用DEP的危险是我们会打开安全漏洞。 DEP的工作原理是不允许在堆上执行任意生成的代码。这有助于防止恶意软件程序将代码插入合法程序的数据段中。
回答
我们处在远景中,iis变得更好(7),卡西尼号一直cr脚。
因此,只需在带有主机头和主机文件条目的iis上启动此应用程序即可。
回答
如果需要,可以授予某些程序从DEP中排除的权限。
作为乔纳森
提到这确实打开了应用程序可能存在的任何漏洞。
回答
感谢回答。我猜想我在.net 1.x时代对IIS产生了如此厌恶,以至于我一直拒绝考虑重新使用它-直到现在。
撇开:在ChanChan和Jonathan的两个同样可以接受的答案之间进行选择时,我任意地将Jonathan的答案标记为"接受",因为a)他排名第一,b)他的代表目前较低。
回答
在Visual Studio中使用IIS不再是过去1.1 / VS02 / 03天的麻烦。有很多充分的理由更喜欢IIS而不是Cassini服务器(Dominick Baier的文章):
Cassini considered harmful Another Reason why I would not recommend Cassini
在IIS和安全性方面,Dominick是"男人"。
当将IIS用于Web应用程序时,我总是首先在IIS中创建该应用程序,将其指向我的首选文件夹,然后让VS创建该项目。这意味着我们最终不会使Web应用程序变得混乱c:\ inetpub \ wwwroot。
当然,现在有了IISExpress,如果我们以IIS7.x为目标,则它是在Visual Studio中开发ASP.NET应用程序的明显选择。