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

问题描述 投票:9回答:8

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

提前致谢。

visual-studio-2010 iis-5 visual-studio-debugging
8个回答
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请求。


4
投票

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


0
投票

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

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


0
投票

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

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


0
投票

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

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

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


0
投票

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


0
投票

出于性能原因,除了<system.webServer>web.config之外,我们从MVC 5项目的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


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.