【问题标题】:Unable to start debugging on the web server. Could not start ASP.NET debugging VS 2010, II7, Win 7 x64无法在 Web 服务器上开始调试。无法启动 ASP.NET 调试 VS 2010、II7、Win 7 x64
【发布时间】:2011-01-11 01:07:10
【问题描述】:

我在 Windows 7 x64 上运行 Visual Studio 2010(以管理员身份)、IIS 7。 我能够在 IIS 7 中运行 ASP.NET 网站而无需调试就好了,但是当我按 F5 进行调试时,我得到:

无法在 Web 服务器上开始调试。无法启动 ASP.NET 调试。启动项目而不进行调试可能会获得更多信息。

不幸的是,帮助链接对我没有多大帮助,并且导致了一大堆事情。

我检查了以下内容:

  • 安全要求——我不记得以前必须做任何特别的事情。 IIS7 中的工作进程是 w3wp.exe。它说如果它作为 ASPNET 或 NETWORK SERVICE 运行,我必须具有管理员权限才能调试它。如何确定是否需要在此处进行更改?

  • 网站属性页 > 开始选项 > 调试器 > ASP.NET 被选中。 使用自定义服务器设置为站点的 URL(无需调试即可正常工作)。

  • web.config 中启用了调试。

  • 应用程序正在使用 ASP.NET 3.5(我想最终迁移到 4.0,但我需要处理一些迁移)。

  • 应用程序池:Classing .NET AppPool(也尝试过 DefaultAppPool)。

接下来我可以检查的任何想法?

安装 IIS、VS、创建网站并开始测试肯定不难吗?

提前致谢。

【问题讨论】:

  • 只是为了清楚,当您启动 Visual Studio 时,您右键单击它并选择“以管理员身份运行”选项?
  • 你查看过这个链接了吗? msdn.microsoft.com/en-us/library/dwesw3ee.aspx
  • @Aaron,是的,我实际上将 VS 设置为始终以管理员身份运行。
  • @Aaron,在发布到这里之前,我明确地浏览了该页面及其子页面,没有什么值得我做的。我的系统符合要求,并且该站点已打开调试。我没有 Windows Server 2003,所以没有在那里配置 IIS。因为我不知道是否需要,所以没有触及任何安全设置。
  • 不确定这是否有帮助,但我尝试在 VS 2010 中创建一个新的测试 ASP.NET 3.5 网站,将其添加到 IIS 7 中而无需任何特殊配置,并且能够正常调试。我的主应用程序在 VS、IIS 甚至文件系统中的配置方式。只是不知道从哪里开始寻找。

标签: asp.net .net visual-studio-2010 iis-7 visual-studio-debugging


【解决方案1】:

尝试进入 IIS 并检查以确保您正在使用的应用程序池已启动。很多时候,您会产生关闭应用程序池的错误。您只需要右键单击并开始即可。

【讨论】:

  • 谢谢,希望我周五能找到这篇文章!游泳池停止了,我遇到了第一个错误
  • 就我而言,我必须在 ISAPI 和 CGI​​ 限制中允许 ASP.NET v4.0.30319
  • +1 用于验证应用程序池的用户名/密码错误。
  • 在我的情况下,池已经启动,但在停止并再次启动后,它工作了。
  • 谢谢。这个解决方案非常适合我。我不得不额外重新启动应用程序池。
【解决方案2】:

原来罪魁祸首是 IIS Url Rewrite 模块。我已经定义了一个规则,它将对 Default.aspx(设置为 网站的起始页)的调用重定向到网站的根目录,这样我就可以规范的主页 URL。但是,显然 VS 对此有疑问并感到困惑。这个问题在我使用 Helicon ISAPI_Rewrite 时没有发生,所以我什至没有想到要检查。

我最终从头开始创建了一个全新的网站,并将项目/文件一点一点地移植到我的解决方案中,并重建我的 web.config,直到我发现这一点! 好吧,至少现在我有一个使用 .NET 4.0 的稍微干净的网站(到目前为止,希望我不会遇到任何问题)——但真是太痛苦了!

【讨论】:

  • 是的,但您必须确保应用程序池正在运行,您的门户也是如此。
  • 在那张纸条上,我的问题出在 web.config 下: 。我在应用程序初始化时使用它来显示启动画面。
  • 这是给我的。将所有 HTTP 流量发送到 HTTPS 的重写规则导致了这个丑陋的错误。我找不到任何方法来保留规则以进行调试。
  • 只是想补充一点,对我来说它是相似的,但是 SSL 重写我们的意思是我们的开始路径是 localhost/appname 但是当重定向将你发送到 localhost/appname 它导致 VS 出错,因为它无法处理重定向...我们花了一个多小时才发现这个问题,因为在本地 IIS 中测试时一切正常!..
  • 这里有同样的问题(IIS Url Rewrite 模块)。我通过将我的规则移动到我的Web.Release.config 来解决它。见weblogs.asp.net/srkirkland/…stackoverflow.com/questions/11032868/…
【解决方案3】:

Visual Studio 在启动时会(出于某种原因)尝试访问 URL:

/debugattach.aspx

如果您有重定向(或以其他方式捕获)的重写规则,例如 .aspx 文件,那么您将在其他地方收到此错误。解决方案是将此部分添加到您的web.config<system.webServer>/<rewrite>/<rules> 部分的开头:

<rule name="Ignore Default.aspx" enabled="true" stopProcessing="true">
    <match url="^debugattach\.aspx" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="None" />
</rule>

这将确保捕获这一特定请求,什么都不做,最重要的是,停止执行,这样您的其他规则都不会运行。这是一个强大的解决方案,因此请随时将其保存在您的配置文件中以用于生产。

【讨论】:

  • 不幸的是,这对我个人不起作用,但是我可以验证这绝对是某种重写问题,因为我确实注释掉了 web.config 的重写部分,我可以毫无问题地运行。
  • 可能想从这里尝试解决方案:stackoverflow.com/a/30813200/375303。对我来说就像一个魅力。
  • Visual Studio 将在此处记录与 DebugAttach.aspx 相关的错误:%UserProfile%\AppData\Local\Temp\Visual Studio Web Debugger.log(如果您没有该文件 - 或者它是一个旧文件——那么您的问题可能与 DebugAttach.aspx 无关。)
  • 就我而言,根本原因是正确的,但不是解决方案。对我来说,这很有效:&lt;location path="debugattach.aspx"&gt; &lt;system.webServer&gt; &lt;validation validateIntegratedModeConfiguration="false" /&gt; &lt;httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"&gt; &lt;clear /&gt; &lt;/httpErrors&gt; &lt;/system.webServer&gt; &lt;/location&gt;
  • 对我来说问题是因为“/debugattach.aspx”,但解决方案也将 erroMode 更改为“DetailedLocalOnly”。
【解决方案4】:

为了其他人的利益,就我而言,我已将应用程序池配置为使用我的 Windows 凭据来访问网络资源共享。自从上次调试解决方案以来,我已经重置了我的 Windows 密码。更改了存储在应用程序池和bada bing中的密码。

【讨论】:

  • 谢谢你,我什至没有使用网络共享,但效果很好。
【解决方案5】:

如果 ApplicationPool Identity 设置了自定义帐户并且计算机的密码被更改,您必须更新您的密码

【讨论】:

  • 是的,有一个问题,从这里尝试了几个答案但没有结果,你的答案对我有帮助!
【解决方案6】:

对于我的场景,它是 web.config 中的 httpErrors 部分的更改,设置如下:

<httpErrors mode="Custom"> 

导致“无法在 Web 服务器上开始调试”问题。将其设置回“DetailedLocalOnly”的先前值修复了该问题。再深入一点,我发现实际上只是 401 错误设置导致了这种情况:

<httpErrors mode="Custom"> 
    <error statusCode="401" prefixLanguageFilePath="" path="/masterpages/500.html" responseMode="ExecuteURL" />
<httpErrors mode="Custom"> 

注释掉 401 错误行也解决了这个问题,我继续这样做,因为我可以维护自定义错误处理并开始调试。

我仍然不知道为什么会这样。

【讨论】:

  • 对我来说同样的原因,在尝试开始调试时在我的日志中看到 401 响应,并且停用我的默认错误处理为我解决了“vs 无法调试站点”问题。我不明白为什么甚至在我的登录页面上出现 401 时且仅在使用 vs 开始调试时,而只有匿名访问和 Web 表单身份验证。被激活。
  • 这也是我的解决方法,只是我设置了默认错误路径,而不是为 401 明确定义一个。
  • 这对我有用(我暂时只是删除了整个 httperrors 部分)。我之前尝试过但不起作用的事情是重新启动应用程序池并删除 URL 重写规则。
  • 这对我有用。然后我将我的自定义错误更改为@Pablo Romeo 在此答案中所写:stackoverflow.com/a/13905859/4489664
  • 将 erroMode 更改为“DetailedLocalOnly”也为我解决了问题。调试器试图打开“/DebugAttach.aspx”,这使它进入了在给定时间无法运行的自定义错误页面。
【解决方案7】:

请检查应用程序池。如果它停止了。重新启动它。

【讨论】:

  • 这与一个月前提出的第 1 个答案相同。
  • 好吧,但为什么每次都停止?
  • 我的应用程序池在更改密码的用户上运行。
【解决方案8】:

在尝试调试 DNN(Dot Net Nuke)模块时遇到了同样的问题。 原来你需要编译 debug="true":

<compilation debug="true" strict="false" targetFramework="4.0"> 

在您的 web.config 中。默认情况下,它在 DNN 中为 false。原文出处: http://www.dnnsoftware.com/forums/forumid/111/postid/189880/scope/posts

【讨论】:

  • 谢谢!!我整天都在扯头发,解决方法很简单。要是 VS 能给出有意义的错误信息就好了!
【解决方案9】:

在实现重写模块后,我遇到了完全相同的问题。

如果我从我的 web.config 文件中删除重写条目,调试就完美了。

为了解决这个问题,我只是在调试时注释掉重写标签,就像这样......

<rewrite>
    <rules>
        <rule name="LowerCaseRule_1" stopProcessing="true">
            <match url="[A-Z]" ignoreCase="false" />
            <action type="Redirect" url="{ToLower:{URL}}" />
        </rule>
        <rule name="RedirectDefault.aspx_1" stopProcessing="true">
            <match url="(.*)default.aspx" />
            <action type="Redirect" url="{R:1}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

然后我在调试后移除 cmets。

必须是 Visual Studio 2010 中的错误。

【讨论】:

  • 没错,这是一种解决方法,但很糟糕,因为在提交或发布网站之前很容易忘记删除这样的 cmets。
  • 您可以在 web.config.release 配置文件中移动这些行,因此当您发布时,它只会在已发布的版本中。我就是这么做的。
  • 也许只是排除 /debugattach.aspx 就可以了。看看 Peter Monks 的评论
【解决方案10】:

自从应用程序池在 IIS 中停止后,我遇到了同样的错误。启动应用程序池后,问题得到解决。

【讨论】:

  • 也解决了我的问题!我发现我的 DefaultAppPool 已停止。谢谢你分享这个。我不明白为什么它停止了。
【解决方案11】:

这是我为清除您指出的错误所做的操作。在文件系统中找到应用程序的 Web 文件夹,转到 Properties=>Security 点击 Advanced 按钮,然后点击 Owner 选项卡,点击编辑按钮并更改文件夹的所有者(具有正确的权限)并选中“替换子容器和对象的所有者”复选框。点击“Apply”,然后我就开始营业了(可以调试了)。

希望这对其他人有用。

【讨论】:

  • 将所有者更改给谁?
【解决方案12】:

终于为我的单一解决方案解决了这个问题。解决方案中的两个项目在 IIS 中设置为站点。我进入并在身份验证下为两个项目启用了 ASP.Net 模拟......和 ​​VIOLA!最后,不要再出现这种烦人的错误了!

【讨论】:

    【解决方案13】:

    我在 VS 2012 中收到相同的错误消息,但没有以管理员身份运行。当我以管理员身份运行该应用程序时,我收到了一条不同且稍微更有帮助的消息(我能够弄清楚)。高温

    【讨论】:

      【解决方案14】:

      如果应用程序池无法重新启动或根本不想重新启动,请验证 Windows 是否在 ASP.NET v4.0 或其他应用程序池上进行了最新更新。这就是我的情况。我只是重新启动了我的计算机,然后重新启动了 ASP.NET v4.0 应用程序池,一切都恢复正常了!

      【讨论】:

        【解决方案15】:

        丹,

        除了Aaron的建议,试试下面的

        • 检查是否在您的 IIS 网站中选择了集成 Windows 身份验证
        • 能否使用 Cassini 而非 IIS 进行调试?

        【讨论】:

        • 我按照此处的步骤打开集成 Windows 身份验证:msdn.microsoft.com/en-us/library/x8a5axew.aspx 但是我仍然遇到相同的错误(iis 管理器显示警告我不能同时使用挑战和基于登录的身份验证 - 我的网站使用表单认证)。我可以使用 VS 2010 内置的 Web 服务器调试站点,但它缺少功能。
        • 您是否尝试在 IIS 中创建一个新网站并在那里部署您的代码?出于好奇,如果您在 Cassini 中进行调试,您会缺少哪些功能?据我所知,Cassini 支持表单身份验证。
        • “在 IIS 中创建新网站”是什么意思?这是一台安装了新操作系统、VS2010、IIS 的新计算机。我在 IIS 中创建了一个新应用程序并将其指向实际网站的文件夹(从备份中检索)。 URL Rewrite 在 Cassini 中似乎没有完全工作。我们还使用自定义模块在 http 和 https (codeproject.com/KB/web-security/WebPageSecurity_v2.aspx) 之间自动切换。
        • Cassini 不支持 Url Rewrite 2 模块
        【解决方案16】:

        在打开所有 IIS 窗口功能时,Windows 10 也有同样的问题。切换到 Windows 8.1 并再次遇到问题。 根在网站名称“http://MySite.local”中(与操作系统版本无关)。

        解决方法很简单

        • 编辑%SystemRoot%\System32\drivers\etc\中的hosts文件

        • 添加ip绑定行:127.0.0.1 MySite.local

        【讨论】:

        • 这对我来说是一个瑰宝,完全忘记了设置我的主机文件,并且想知道为什么当我切换到本地 iis(对于 https)时我的 api 不起作用。 VS 只能在其中运行一个站点,但是一旦我添加了第二个站点,我就无法再调试了,这解决了它。
        【解决方案17】:

        我今天遇到了这个错误,因为代码中的缺陷被大量回发,导致 IIS 被请求淹没。这基本上锁定了 IIS,因此当我尝试调试时,它“超时”尝试启动调试器。我只是重新启动了 IIS,花了几分钟,它解决了这个问题。

        我确实希望这个错误不那么普遍,似乎有几种不同的方法可以产生它。

        【讨论】:

          【解决方案18】:

          我在 Windows 8.1 上的 Visual Studio 2012 和 2013 中遇到了同样的问题。对我来说,解决方法是使用“打开或关闭 Windows 功能”将 Windows 身份验证添加到 IIS

          【讨论】:

            【解决方案19】:

            确保您网站的应用程序池使用正确的框架版本。我在 ASP.Net 2005 站点上收到“无法开始调试”错误。它在 Windows 7 上错误地使用了 DefaultAppPool(我相信它使用的是 .Net Framework 4)。我创建了一个基于 .Net Framework 2 的新应用程序池并将其分配给问题网站。之后调试工作正常。

            【讨论】:

              【解决方案20】:

              检查您在 IIS 上的网站是否没有停止。

              我修复了它让我的网站运行。 :D

              【讨论】:

                【解决方案21】:

                我遇到了这个问题,最终意识到我的 ASP.net 没有在 IIS 中正确注册。在 Visual Studio 之前安装 IIS 服务器时,可能会发生这种情况。要解决此问题,请使用命令 aspnet_regiis -i 更多信息请参见link

                【讨论】:

                  【解决方案22】:

                  有同样的问题。如果您在 IIS 上安装了 SSL 证书,并且尝试从 Visual Studio 调试它,那么您需要在 IIS 上设置应用程序以忽略证书。

                  【讨论】:

                    【解决方案23】:

                    我遇到了同样的问题,发现是因为我在结束标记后错误地在我的Web.config 中输入了一个字符。我的Web.config 最后看起来像这样:&lt;/section&gt;h。 “h”是结束标签后的一个额外字符。

                    【讨论】:

                      【解决方案24】:

                      像这样删除刺痛:在 web.config 中的 targetFramework="4.0" 或将 AppPool 更改为适当的框架版本。

                      【讨论】:

                        【解决方案25】:

                        卸载 IIS UrlScan 扩展为我解决了这个问题。

                        【讨论】:

                          【解决方案26】:

                          我遇到了同样的问题,但它是在 Visual Studios 自己的 Web 开发服务器上而不是 IIS 上。解决方法是取消选中项目属性下 Web 选项卡中的选项,将服务器设置应用于所有用户(存储在项目文件中。 ).希望它能节省一些人的宝贵时间。

                          【讨论】:

                            【解决方案27】:

                            我遇到了同样的问题。 以上所有答案都对我不起作用。 解决方法是手动删除 bin 和 obj 文件夹。

                            【讨论】:

                              【解决方案28】:

                              我也发现了这个问题,但它与@Kirk 的解释和 URL 重写最相似。

                              在我的例子中,有人已经为 MVC 项目的 web.config 文件签入了此更改:

                              <system.webServer>
                                  <security>
                                      <requestFiltering>
                                          <fileExtensions>
                                              <add fileExtension=".aspx" allowed="false" />
                                          </fileExtensions>
                                      </requestFiltering>
                                  </security>
                              </system.webServer>
                              

                              由于 Web 服务器上不允许使用 .aspx 文件扩展名,/debugattach.aspx URL 被拒绝,导致调试器无法运行。一旦我删除了这个配置,它就会再次工作。

                              【讨论】:

                                【解决方案29】:

                                我在 Visual Studio 中创建应用程序时遇到了同样的问题,然后在属性中创建了用于本地 IIS 的虚拟目录。如果有人遇到此错误,那是因为 VS 在错误的 AppPool 下创建应用程序,即在不适合您需求的 AppPool 下创建应用程序。
                                如果是这种情况,请转到 IIS 管理器,选择应用程序,转到基本设置并更改应用程序的 AppPool 即可。

                                【讨论】:

                                  【解决方案30】:

                                  我最近遇到了同样的错误,在我的情况下,结果证明存在重复的 MIME 类型。我最近添加了两个最初没有出现在列表中的东西。 IIS 让我添加它们,只有当我决定作为诊断过程的一部分再次检查站点的 MIME 类型时,我在 IIS 中也遇到了错误。它引用了 web.config 中的重复项。回到 web.config 文件后,我注意到添加了一个名为的新部分,其中包括最近添加的两种 MIME 类型。删除了那个部分,生活又美好了!希望这可以帮助其他未能通过任何其他建议解决问题的人。

                                  【讨论】:

                                    猜你喜欢
                                    • 2018-04-26
                                    • 2011-09-23
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2013-07-19
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多