3

有时,我发现在调试 ASP.Net 应用程序(用 Visual Studio 2008 编写,在 Vista 64 位上运行)时,本地 ASP.Net 开发服务器(即“Cassini”)停止响应。

经常出现一条消息,告诉我“数据执行保护 (DEP)”已杀死 WebDev.WebServer.exe

事件日志只是告诉我“WebDev.WebServer.exe 已停止工作”

我听说这个“问题”在 Vista 64 位上更频繁地出现,因为默认情况下 DEP 是打开的。因此,关闭 DEP 可能会“解决”问题。

但我想知道:

Cassini 是否存在导致 DEP 终止进程的已知错误/情况?

或者,禁用数据执行保护的实际危险是什么?

4

5 回答 5

3

唯一确定的方法是挖掘 Cassini 源代码,看看是否有任何区域在堆上生成代码,然后在不清除 NX 标志的情况下执行它。

但是,与其这样做,为什么不使用 IIS?

编辑:

禁用 DEP 的危险在于您打开了安全漏洞。DEP 的工作原理是不允许在堆上执行任意生成的代码。这有助于防止恶意软件程序将代码插入合法程序的数据段。

于 2008-08-21T05:15:01.073 回答
2

你在 vista 上,iis 变得更好(7),卡西尼一直很糟糕。

因此,只需在 iis 上使用主机标头和主机文件条目启动此应用程序。

于 2008-08-21T05:18:09.613 回答
1

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

作为乔纳森

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

于 2008-08-21T06:41:16.730 回答
1

在 Visual Studio 中使用 IIS 不再像 1.1/VS02/03 天那样令人痛苦。有很多充分的理由更喜欢 IIS 而不是 Cassini 服务器(Dominick Baier的文章):

Cassini 被认为有害
我不推荐 Cassini 的另一个原因

在 IIS 和安全方面,Dominick 是“男人”。

在将 IIS 用于 Web 应用程序时,我总是先在 IIS 中创建应用程序,将其指向我喜欢的文件夹,然后让 VS 创建项目。这意味着您最终不会将 c:\inetpub\wwwroot 与您的 Web 应用程序混为一谈。

当然,现在我们有了 IISExpress,如果您的目标是 IIS7.x,那么它是在 Visual Studio 中开发 ASP.NET 应用程序的明显选择。

于 2008-08-21T15:14:01.913 回答
0

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

另外:当在 ChanChan 和 Jonathan 的两个同样可以接受的答案中进行选择时,我任意将 Jonathan 的答案标记为“已接受”,因为 a)他首先进入,b)他的代表目前较低。

于 2008-08-21T06:51:00.920 回答