什么是debugattach.aspx,为什么服务器找不到它?
我在使用VS 2010和IIS 5的XP(SP3)机器上开发。什么是debugattach.aspx,为什么服务器找不到它?
我有两个版本的同一个站点。我们发布了我们的第一个生产版本,所以我将代码分叉到一个新的目录树中,并在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如何使用它们?
在此先感谢。
将<compilation debug="true">
添加到您的Web.config中。
SLaks,我很欣赏这个回应,但是从项目的第一天开始调试已经设置为true。 – 2010-12-17 14:58:06
我刚刚遇到了这个。我已关闭允许未列出的文件扩展名设置在请求在我的本地IIS服务器上过滤(为了匹配我们在其他环境中的安全强化设置)。原来.aspx被阻止。我重新打开了设置并可以附加到调试器。所以我将它关闭,并在站点级别为.aspx添加了一个补贴,然后我可以再次使用调试器附加。
我很好奇为什么调试器正在寻找debugattach.aspx,并且出现此错误。特别是因为我的应用程序是MVC,我不需要服务.aspx。
我有一个通配符脚本映射的.NET 4版本的aspnet_isapi.dll是造成这种情况。我能够更改脚本映射来忽略DEBUG谓词(仅使用我需要的动词来执行我的应用程序),并使VS自动附加。因此,我最终使用VS开发Web服务器或IIS Express来让我的站点在XP机器上工作,因为IIS 5.1不喜欢通配符脚本映射和ASP.NET路由的组合。
基于this old posting,DebugAttach.aspx由HTTP处理程序System.Web.HttpDebugHandler实现。实际上,我没有在IIS7中的任何地方看到这个处理程序 - 这个实现可能会合并到其他一些处理程序中。绝对是某种类型的处理程序。当它工作时,您会在日志中看到200条(成功)消息。
我有这种相同的问题2种不同的方式,其中在VS2010调试失败,因为到达调试处理程序的问题。使用IIS失败的请求跟踪日志,我可以看到IIS模块干扰的情况。在曾经的情况下,UrlScan.dll阻止了DEBUG谓词。另一种情况是,从HTTP到HTTPS的重定向导致调试处理程序返回302.在这两种情况下,VS都会使用类似的对话框进行barfed。
无论如何,这里的技巧似乎在弄清楚如何阻止对此URL的DEBUG请求。
Visual Studio将在此处记录与DebugAttach.aspx相关的错误:%UserProfile%\ AppData \ Local \ Temp \ Visual Studio Web Debugger.log(如果您没有该文件 - 或者它是旧文件),那么您的问题可能与DebugAttach.aspx无关。) – 2016-03-22 18:48:04
如果您运行的是VS2010或更高版本,并且安装了.Net 4.x或更高版本,请尝试重命名“v3.0”子目录(例如“重命名C:\ Windows \ Microsoft.Net \ Framework \ v3”。 0 v3.0.ORIGINAL“),重新启动您的机器,并尝试在Visual Studio中再次调试。
这对我来说就像一个血腥的魅力,但你的里程可能会有所不同,取决于你在做什么样的发展。
我一直在这样运行Visual Studio 2012两周,我真的无法相信事情是多快(再次!)。使用F5启动调试器现在是即时的,停止调试会话也是即时的。各种各样的越野车和慢跑行为已经停止,到目前为止我还没有看到单一的副作用。
适用于我的解决方案是以管理员身份运行模式重新启动VStudio。
请忽略。我找到了解决方案。我不明白这一点,但我得到了它的工作。我又回过头去,并排比较了两个站点的IIS属性,发现了不同之处。在应用程序扩展映射中,我添加了aspnet_isapi.dll作为通配符映射,以便通过MVC映射运行无扩展名的URL,并在不工作的站点上检查了“脚本引擎”复选框在那个网站上。我删除了它,然后再次尝试,并开始调试。 – 2010-12-17 14:58:35
虽然这是一个旧的帖子,但你仍然可以获得荣誉发布自己的答案=) – killthrush 2016-03-22 18:10:22