12

我正在使用 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 如何使用它们的文档?

提前致谢。

4

9 回答 9

5

根据这个旧贴,DebugAttach.aspx 由 HTTP 处理程序 System.Web.HttpDebugHandler 实现。我实际上并没有在 IIS7 的任何地方看到这个处理程序被引用——这个实现有可能被合并到其他一些处理程序中。绝对是某种处理程序。当它工作时,您会在日志中看到 200 条(成功)消息。

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

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

于 2013-09-05T17:30:37.313 回答
4

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

于 2018-03-19T12:58:41.633 回答
1

出于性能原因,我们从<system.webServer>MVC 5 项目的元素中删除了web.configStaticFileand之外的所有处理程序ExtensionlessUrlHandler-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

于 2019-02-21T11:38:27.740 回答
0

I just ran into this as well. I had turned off the Allow unlisted file name extensions setting under Request Filtering on my local IIS server (in order to match our security hardened settings in other environments). Turns out .aspx was being blocked. I turned the setting back on and could attach with the debugger. So I turned it back off, and added an allowance at the site level for .aspx and I can attach with the debugger once again.

I'm curious as well why the debugger is looking for debugattach.aspx, and failing with this error. Especially since my app is MVC and I don't need to serve .aspx.

于 2013-01-28T23:13:54.317 回答
0

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

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

于 2013-04-15T06:55:18.100 回答
0

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

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

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

于 2015-06-12T22:42:49.227 回答
0

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

于 2017-06-27T01:42:34.143 回答
0

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

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

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

于 2021-03-04T18:00:08.930 回答
-2

添加<compilation debug="true">到您的 Web.config。

于 2010-12-17T14:00:42.943 回答