什么是debugattach.aspx以及为什么服务器找不到它?

时间:2010-12-17 13:57:51

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

我正在使用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”文件,然后调用它,也许它没有对目录的写权限,但据我所知,它确实

我用Google搜索了debugattach.aspx,并且返回的所有文章的前几页似乎都引用了锁定和超时,主要是在IIS 7和VS 2005上。似乎没有什么适用于这种情况。

看看有效的旧版本和没有的旧版本之间有什么不同,唯一的东西是虚拟目录的IIS设置,以及代码本身的web.config。但是我已经并排浏览了两个网站,并且找不到任何可以解释这种行为的差异。

有人知道他们可以与我分享吗?或者任何人都可以向我指出有关debugattach.aspx究竟是什么/做什么,以及DEBUG HTTP请求的作用和/或VS如何使用它们的任何文档?

提前致谢。

9 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我也遇到了这个问题。我已关闭本地IIS服务器上请求过滤下的允许未列出的文件扩展名设置(以便与其他环境中的安全加固设置相匹配)。原来.aspx被封锁了。我重新打开了设置,可以附加调试器。所以我将其关闭,并在网站级别为.aspx添加了一个限额,我可以再次使用调试器附加。

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

适用于我的解决方案是在“以管理员身份运行模式”中重新启动VStudio。

答案 6 :(得分:0)

出于性能原因,我们从MVC 5项目的<system.webServer>的{​​{1}}元素中删除了除web.configStaticFile之外的所有处理程序,然后在出现以下情况时开始出现此错误:从Visual Studio调试。

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

因此,我们将以下行添加到ExtensionlessUrlHandler-Integrated-4.0处理程序中:

web.config

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

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

答案 7 :(得分:0)

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

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

最后是一个头颅。希望这能帮助其他人解决有关 debugattach.aspx 的问题。

答案 8 :(得分:-2)

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