“数据执行保护”杀死(VS2008)Vista 64上的本地ASP.Net开发服务器(又名Cassini)

“数据执行保护”杀死(VS2008)Vista 64上的本地ASP.Net开发服务器(又名Cassini)

“Data Execution Prevention” kills (VS2008) local ASP.Net Development Server (aka Cassini) on Vista 64

有时,我发现在调试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上启动此应用程序即可。


在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应用程序的明显选择。


如果需要,可以将某些程序排除在DEP外。

作为乔纳森

提到这确实打开了应用程序可能存在的任何漏洞。


感谢您的回答。我想我在.net 1.x时代对IIS产生了如此厌恶,以至于我一直拒绝考虑重新使用它-直到现在。

撇开:在ChanChan和Jonathan的两个同样可以接受的答案之间进行选择时,我任意地将Jonathan的答案标记为"接受",因为a)他排名第一,b)他的代表目前较低。


推荐阅读