92

我在 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、创建网站并开始测试应该不会那么难吧?

提前致谢。

4

31 回答 31

239

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

于 2011-07-14T21:51:25.330 回答
45

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

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

于 2011-01-13T22:08:01.727 回答
42

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>

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

于 2011-10-04T17:57:53.960 回答
30

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

于 2012-06-18T08:40:51.057 回答
21

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

于 2013-08-26T06:20:34.620 回答
19

对于我的场景,它是 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 错误行也解决了这个问题,我同意了,因为我可以维护自定义错误处理并开始调试。

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

于 2013-03-23T10:21:48.370 回答
13

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

于 2014-08-11T10:24:06.177 回答
11

尝试调试 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

于 2013-11-16T15:45:15.707 回答
8

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

如果我从我的 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>

然后我在调试后删除评论。

必须是 Visual Studio 2010 中的错误。

于 2011-07-16T15:29:39.383 回答
6

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

于 2013-07-09T05:37:30.677 回答
5

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

于 2013-02-21T18:04:42.553 回答
5

这是我为清除您指出的错误所做的操作。在文件系统中找到应用程序的 web 文件夹,转到Properties=>Security单击Advanced按钮,然后单击Owner选项卡,单击Edit按钮并更改文件夹的所有者(具有正确的权限)并选中“ Repalce子容器和对象的所有者”复选框。单击“应用”,然后我在营业(能够调试)。

希望这对其他人有用。

于 2012-01-10T18:22:53.300 回答
3

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

于 2015-04-09T22:43:56.390 回答
3

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

于 2014-11-19T15:21:42.847 回答
2

担,

除了 Aaron 的建议,尝试以下

  • 检查是否在您的 IIS 网站中选择了集成 Windows 身份验证
  • 您可以使用 Cassini 而不是 IIS 进行调试吗?
于 2011-01-11T03:14:00.190 回答
2

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

解决方案很简单

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

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

于 2015-08-04T23:14:56.927 回答
1

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

于 2014-01-03T14:10:05.287 回答
1

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

打开或关闭 Windows 功能截图

于 2013-11-18T01:58:21.460 回答
1

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

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

于 2013-08-14T15:45:59.550 回答
1

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

于 2015-03-25T12:22:07.670 回答
1

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

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

于 2014-02-17T22:17:05.943 回答
1

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

于 2014-11-26T18:42:02.287 回答
1

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

于 2015-06-11T15:39:32.240 回答
0

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

于 2015-03-16T16:16:36.803 回答
0

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

于 2014-10-30T09:32:27.610 回答
0

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

于 2013-11-18T13:54:41.953 回答
0

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

于 2012-09-25T09:16:58.833 回答
0

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

于 2014-01-07T11:52:37.670 回答
0

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

于 2014-04-04T12:59:03.093 回答
0

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

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

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

由于 Web 服务器上不允许使用 .aspx 文件扩展名,因此/debugattach.aspxURL 被拒绝,从而阻止了调试器运行。一旦我删除了这个配置,它就会再次工作。

于 2014-05-06T15:53:34.417 回答
-4

而不是使用 IIS,只需使用 IIS Express。

于 2014-10-15T20:29:53.913 回答