【问题标题】:"Data Execution Prevention" kills (VS2008) local ASP.Net Development Server (aka Cassini) on Vista 64“数据执行保护”杀死(VS2008)Vista 64 上的本地 ASP.Net 开发服务器(又名 Cassini)
【发布时间】:2010-09-06 08:51:28
【问题描述】:

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

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

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

我听说这个“问题”在 Vista 64 位上更常见,因为默认情况下 DEP 处于启用状态。因此,关闭 DEP 可能会“解决”问题。

但我想知道:

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

另外,禁用数据执行保护有什么实际危险?

【问题讨论】:

    标签: asp.net cassini dep


    【解决方案1】:

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

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

    编辑:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        作为Jonathan

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

        【讨论】:

        • webdev.webserver.exe 无法从 windows 中的 DEP 中删除
        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          Cassini considered harmful
          Another Reason why I would not recommend Cassini

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多