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

StackOverflow https://stackoverflow.com/questions/19349

  •  09-06-2019
  •  | 
  •  

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

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

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

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

但我想知道:

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

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

有帮助吗?

解决方案

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

但是,为什么不使用 IIS,而不是这样做呢?

编辑:

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

其他提示

你在vista上,iis变得更好了(7),cassini仍然很糟糕。

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

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

作为 乔纳森

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

在 Visual Studio 中使用 IIS 不再像 1.1/VS02/03 时代那样令人头疼。有很多充分的理由选择 IIS 而不是 Cassini 服务器(作者的文章 多米尼克·拜尔):

卡西尼号被认为是有害的
我不推荐卡西尼号的另一个原因

谈到 IIS 和安全问题,多米尼克 (Dominick) 堪称“佼佼者”。

当使用 IIS 开发 Web 应用程序时,我总是首先在 IIS 中创建应用程序,将其指向我的首选文件夹,然后让 VS 创建项目。这意味着您最终不会因网络应用程序而使 c:\inetpub\wwwroot 变得混乱。

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

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

在旁边:当在 ChanChan 和 Jonathan 的两个同样可接受的答案之间进行选择时,我武断地将 Jonathan 标记为“已接受”,因为 a)他首先进入,b)他的代表目前较低。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top