无法在Web服务器上启动调试。远程服务器返回错误:(404)未找到。在Visual Studio中启动调试时出错。

23

我之前已经设置了项目在IIS上运行,当我按下F5时,它可以正常连接。但最近这个功能停止工作了,当我按下F5 / 按下Debug->Start debugging时,出现以下错误:

无法在Web服务器上启动调试。远程服务器返回错误:(404)未找到。

enter image description here

这是我的设置:

enter image description here

我不确定发生了什么事情,可能是一些VS更新或Windows更新,但我已经尝试在Google上搜索了很多地方,但什么都没有起作用。与进程附加正常运行,但这种更简单的方式停止起作用了。
更新: 尝试使用Process Monitor找出问题所在,看起来w3wp尝试访问路径MyProjectFolder\debugattach.aspx,结果是“未找到名称”。不知道这是否是问题的根源。

关闭 Visual Studio 并打开您的解决方案所在的文件夹。尝试删除名为 ".vs" 的隐藏文件夹,然后重新打开 Visual Studio 并尝试调试。 - Ken Tucker
我不发布该站点,该路径只是指向解决方案所在的同一位置。不带调试启动可以正常工作,并且整个站点都能正常运行。我已经了解了正确的ASP.NET版本的相关信息,但这已经很久没改变过了,我已经仔细检查它是否设置为4了。我使用的是4.5.2,但我怀疑它不应该是特殊选择吧? - Ilya Chernomordik
@Ilya Chernomordik,所以它是本地Web应用程序,如果是这样的话,您能否分享一下关于您的项目属性->Web的屏幕截图?您选择"IIS Express"作为服务器吗?您在调试器下启用了"ASP.NET"吗? - Jack Zhai
@Ilya Chernomordik,请从IIS管理器中删除您的项目,然后以管理员身份运行您的VS,在您的项目中再次单击创建虚拟目录,调试您的应用程序,查看结果。或者您可以在IIS Manager-> Manager Application->Browser中右键单击您的项目,查看结果。请参阅:https://msdn.microsoft.com/zh-cn/library/dwesw3ee.aspx?f=255&MSPPError=-2147217396 - Jack Zhai
我已经做了一些研究,并更新了帖子,其中包含无法访问的debugattach。 - Ilya Chernomordik
显示剩余6条评论
9个回答

17

看起来我的一位同事编辑了 web.config 并添加了请求过滤,其中删除了“DEBUG”动词。这禁用了使用F5进行调试。 在添加它(或删除请求过滤)之后,一切正常运作。

P.S. 关于类似错误的许多其他可能性问题在此处有描述。


嗨,我也遇到相同的问题,我已经在web.config中添加了以下设置: <verbs allowUnlisted="false"> <!--Allowed Verbs--> <add verb="GET" allowed="true" /> <add verb="POST" allowed="true" /> </verbs> 设置完成后出现了上述错误,如果我将其删除,则一切正常。有人知道为什么会发生这种情况吗?或者我需要允许任何特定的谓词来进行调试?我想保留这些设置并启用调试。 - Ashish Shukla
你需要允许DEBUG动词。 - Ilya Chernomordik
1
解决方案:http://coderjony.com/blogs/unable-to-start-debugging-on-the-web-server-the-remote-server-returned-an-error-404-not-found/ - Ankush Jain
1
@AshishShukla 这正是导致我的问题的原因,我将该块移动到 Web.Release.config 中,这样当我们部署到 PROD 时,它将出现在配置文件中。一旦我从本地 web.config 文件中删除了该部分,我终于能够对我的本地 IIS 实例进行调试了。 - mknopf

10

虽然这篇文章有些旧,但最近我遇到了同样的问题。我发现确保在“程序和功能”(Windows 10)中启用以下设置可以解决我的问题:

启用程序和功能


这是我的情况,谢谢! - undefined

8

在我的情况下(Windows 10和Visual Studio 2017),我需要在Internet Information Services下安装ASP.NET 3.5ASP.NET 4.7

单击此处查看解决方案


1
这件事情发生在我使用重写模块将网站重定向到https时。我运行的是https://localhost/WebSiteName,但在IIS管理器中的默认网站绑定中放置了我的机器名称。当我删除了机器名称后,它就可以正常工作了。

1
这个小建议真是救了我一命。我讨厌IIS配置的难以理解(实际上,我讨厌所有微软配置复杂性的形式)。因此,我选择了在web config中注释掉Rewrite模块的hack方法。现在网站可以在调试模式下正常工作了。 - Stuart Aitken

1

最近我在VS2013 Professional中遇到了相同的问题,立即出现错误“无法在Web服务器上启动调试”。我注意到,每当我的当前页面是MVC视图(.cshtml)文件并且我开始调试时,错误窗口每次都会提示。只要将项目中的当前文档切换到控制器(.cs)文件并开始调试,它就可以正常工作。所以我的解决方法是,在调试我的代码时,我必须在(.cs)文件而不是(.cshtml / web.config)文件上。希望这有所帮助!


0

我的问题与下面附上的405有关 在此输入图片描述

在将我的项目属性(WebBuild)设置如下后,我的问题得到了解决 在此输入图片描述

enter image description here


0

这个问题的另一个原因是您没有以管理员身份运行Visual Studio(Run as administrator)


0

0
在我的情况下,这个错误信息(VS2017)是由IIS中默认的HTTP绑定引起的,端口号为80。与其为空,"hostname"中包含了我的机器名称。
解决方案: IIS-默认站点-绑定...-端口号http 80 - 主机名 将其留空,或输入localhost。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接