【问题标题】:What is debugattach.aspx and why can't the server find it?debugattach.aspx 是什么,为什么服务器找不到?
【发布时间】:2011-05-27 03:31:09
【问题描述】:

我正在使用 VS 2010 和 IIS 5 的 XP (SP3) 机器上进行开发。

我有同一个网站的两个版本。我们已经发布了我们的第一个生产版本,所以我将代码分叉到一个新的目录树中,并在 IIS 中设置新的虚拟目录以指向新的树。这些项目设置为在 IIS 而不是 VS 的服务器中运行。主站点是一个基于 MVC 2 的项目。

我的问题是,当我在 Visual Studio 2010 中按 F5 开始调试新版本时,我收到“无法在 Web 服务器上开始调试。Web 服务器找不到请求的资源”。我昨天大部分时间都在试图弄清楚它正在寻找什么资源却找不到。这发生在它到达“应用程序启动”之前。我终于想到查看 Web 日志,发现每次按 F5 键时,Web 日志都会显示对 /debugattach.aspx 的 DEBUG 请求,返回码为 404(未找到)。如果我在旧版本上运行相同的序列,它会显示相同的内容,但首先使用 401 代码,然后请求以 200 代码重复。

我的第一个想法是VS必须写出一个“debugattach.aspx”文件,然后调用它,也许它没有目录的写权限,但是,据我所知,它确实.

我用谷歌搜索了 debugattach.aspx,返回的前几页文章似乎都提到了锁定和超时,主要是在 IIS 7 和 VS 2005 上。似乎没有任何东西适用于这种情况。

看看有效的旧版本和无效的新版本有什么不同,唯一的事情是虚拟目录的 IIS 设置,以及代码本身的 web.config。但是我并排查看了这两个网站,找不到任何导致这种行为的差异。

有没有人知道可以和我分享的线索?或者任何人都可以向我指出关于 debugattach.aspx 到底是什么/做什么、DEBUG HTTP 请求做什么和/或 VS 如何使用它们的任何文档?

提前致谢。

【问题讨论】:

  • 请忽略。我找到了解决方案。我不明白,但我得到了它的工作。我再次返回并并排比较了两个站点的 IIS 属性,发现了不同之处。在应用程序扩展映射中,我将 aspnet_isapi.dll 添加为通配符映射,以便通过 MVC 映射运行无扩展 URL,在不工作的站点上选中了“脚本引擎”复选框,但未选中在那个网站上。我删除了它,然后再次尝试,调试开始了。
  • 虽然这是一篇旧帖子,但您仍然可以通过发布自己的答案获得赞誉 =)

标签: visual-studio-2010 iis-5 visual-studio-debugging


【解决方案1】:

基于this old posting,DebugAttach.aspx 由HTTP 处理程序System.Web.HttpDebugHandler 实现。我实际上并没有看到在 IIS7 中的任何地方引用了这个处理程序——这个实现有可能被合并到其他一些处理程序中。不过肯定是某种处理程序。当它运行时,您会在日志中看到 200 条(成功)消息。

我在 2 个不同的方面遇到了同样的问题,其中 F5 调试在 VS2010 中失败,因为到达调试处理程序时出现问题。使用 IIS 失败的请求跟踪日志,我能够看到 IIS 模块干扰的实例。有一次,UrlScan.dll 阻止了 DEBUG 动词。在另一种情况下,从 HTTP 到 HTTPS 的重定向导致调试处理程序返回 302。在这两种情况下,VS 都出现了类似的对话框。

无论如何,这里的诀窍似乎是弄清楚如何阻止对该 URL 的 DEBUG 请求。

【讨论】:

  • Visual Studio 将在此处记录与 DebugAttach.aspx 相关的错误:%UserProfile%\AppData\Local\Temp\Visual Studio Web Debugger.log(如果您没有该文件 - 或者它是一个旧文件——那么您的问题可能与 DebugAttach.aspx 无关。)
【解决方案2】:

在我的情况下,我在 Windows 10 上使用 VS2017 创建了一个空 Web 应用程序。当我取消选中项目设置 -> Web 下的 ASP.NET 调试器框时,问题就消失了。在此之前,我几乎尝试了所有解决问题的建议。

【讨论】:

  • +1 先生。修复了我需要花费数小时的问题。我的官方错误是错误:无法在 Web 服务器上开始调试。远程服务器返回错误:(403) Forbidden
【解决方案3】:

出于性能原因,我们从 MVC 5 项目的 web.config<system.webServer> 元素中删除了所有处理程序,StaticFileExtensionlessUrlHandler-Integrated-4.0 除外,然后在从 Visual Studio 调试时开始出现此错误。

经过一番调查,我们发现在正常使用中,任何处理此请求的模块都会导致返回 HTTP 错误 401(未经授权)。我无法准确找出它是哪个模块,但我能够找到负责的类:System.Web.HttpDebugHandler

因此,我们在web.config 处理程序中添加了以下行:

<add name="DebugAttachHandler" path="DebugAttach.aspx" verb="DEBUG"
    type="System.Web.HttpDebugHandler" resourceType="Unspecified" requireAccess="Script"
    preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

点击该 URL 时,IIS 会发出 401,就像启用所有处理程序时一样,因此 Visual Studio 再次感到高兴。

另见:https://developercommunity.visualstudio.com/content/problem/464980/unable-to-start-debugging-a-web-project-when-vs-ge.html

【讨论】:

    【解决方案4】:

    我也遇到了这个问题。我在本地 IIS 服务器上的 Request Filtering 下关闭了 Allow unlisted file name extensions 设置(以匹配我们在其他环境中的安全强化设置)。原来.aspx 被阻止了。我重新打开设置并可以使用调试器附加。所以我把它关掉了,并在站点级别为 .aspx 添加了一个余量,我可以再次附加调试器。

    我也很好奇为什么调试器正在寻找 debugattach.aspx,并因为这个错误而失败。特别是因为我的应用程序是 MVC,我不需要提供 .aspx。

    【讨论】:

      【解决方案5】:

      我有一个导致此问题的 .NET 4 版本的 aspnet_isapi.dll 的通配符脚本映射。我能够更改脚本映射以忽略 DEBUG 动词(仅使用我的应用程序所需的动词)并启用 VS 自动附加。

      话虽如此,我最终还是使用了 VS 开发 Web 服务器或 IIS Express 来让我的网站在 XP 机器上运行,因为 IIS 5.1 不喜欢通配符脚本映射和 ASP.NET 路由的组合。

      【讨论】:

        【解决方案6】:

        如果您运行的是 VS2010 或更高版本,并且已安装 .Net 4.x 或更高版本,请尝试重命名“v3.0”子目录(例如“rename C:\Windows\Microsoft.Net\Framework\v3.0 v3.0.ORIGINAL"),重新启动计算机,然后在 Visual Studio 中再次尝试调试。

        这对我来说就像一个血腥的魅力,但你的里程可能会有所不同,这取决于你正在进行什么样的开发。

        我已经像这样运行 Visual Studio 2012 两个星期了,我真的不敢相信事情的速度有多快(再次!)。现在使用 F5 启动调试器是即时的,停止调试会话也是即时的。各种错误和迟钝的行为已经停止,到目前为止我还没有看到任何副作用。

        【讨论】:

          【解决方案7】:

          对我有用的解决方案是在以管理员身份运行模式下重新启动 VStudio。

          【讨论】:

            【解决方案8】:

            我最近遇到了这个 debugattach.aspx 文件问题。对我来说,这始于试图通过 VS 2017 调试 ASP.NET 应用程序的错误消息。花了两​​天时间关注网上的所有建议后,我终于偶然发现了这个 debugattach.aspx 东西。我也想知道它是什么以及为什么 IIS 对它的请求返回 403-Forbidden 响应。

            长话短说,这发生在我身上是因为我要调试的应用程序恰好位于另一个 Web 应用程序下的虚拟目录中。我必须确保在“父”应用程序上设置了&lt;compilation debug="true" 标志,即使我对调试那个应用程序不感兴趣。

            最后是一个令人头疼的问题。希望这可以帮助其他试图追踪 debugattach.aspx 问题的人。

            【讨论】:

              【解决方案9】:

              &lt;compilation debug="true"&gt; 添加到您的 Web.config。

              【讨论】:

              • SLaks,我很欣赏您的回复,但从该项目的第一天开始,调试就已设置为 true。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-05-28
              • 1970-01-01
              • 1970-01-01
              • 2017-05-21
              • 2012-06-01
              相关资源
              最近更新 更多