无法在Web服务器上启动调试。无法启动ASP.NET调试VS 2010,II7,Win 7 x64


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,但是我需要进行一些迁移)。

  • 应用程序池:对.NET AppPool进行分类(也尝试使用DefaultAppPool)。

有什么想法我可以下一步检查吗?

当然,安装IIS,VS,创建网站并开始测试并不难吗?

提前致谢。


1
为了清楚起见,当您启动Visual Studio时,右键单击它并选择“以管理员身份运行”选项?
亚伦·卡尔森


@Aaron,是的,我实际上已将VS设置为始终以管理员身份运行。
丹ç

@Aaron,我明确地浏览了该页面及其子对象,然后再在此处发布,我没有什么需要做的。我的系统符合要求,并且已为该站点打开调试。我没有Windows Server 2003,因此没有在那里配置IIS。由于我不知道是否需要,因此未涉及任何安全设置。
丹ç

不确定这是否有帮助,但是我尝试在VS 2010中创建一个新的测试ASP.NET 3.5网站,无需任何特殊配置即可将其添加到IIS 7中,并且能够对其进行调试。与我的主应用程序有关的内容,以及如何在VS,IIS甚至文件系统中进行配置。只是不确定从哪里开始寻找。
Dan C

Answers:


239

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


谢谢,希望我星期五能找到这个帖子!池停止了,我遇到了第一个错误
Christopher Cabezudo Rodriguez

就我而言,我必须允许ISAPI和CGI限制中的ASP.NET v4.0.30319
Adi

15
+1用于验证应用程序池的错误用户名/密码。
P.Brian.Mackey

3
在我的情况下,该池已经启动,但是在停止并再次启动它之后,它就可以了。
Serj Sagan 2014年

1
谢谢。该解决方案非常适合我。我还必须重新启动应用程序池。
Sunil

44

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

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


6
是的,但是您必须确保应用程序池也在运行,并且您的门户也在运行。
JuniorMayhé2011年

在该注释上,我的问题在web.config中的以下位置:<applicationInitialization remapManagedRequestsTo =“ / App / splash.html” doAppInitAfterRestart =“ true” lockAttributes =“”> <添加初始化页=“ App / index.html” hostName =“ CSI“ lockItem =” true“ /> </ applicationInitialization>。在应用程序初始化时,我用它来显示启动屏幕。
尼克

6
这是给我的。将所有HTTP通信发送到HTTPS的重写规则导致此难看的错误。我找不到任何方法可以将规则保持在适当的位置以进行调试。

只是想补充一点,对我来说是相似的,但是SSL重写意味着我们的开始路径是localhost / appname,但是由于重定向将您发送到localhost / appname,导致VS错误,因为它无法处理重定向。 。我们花了一个小时+找到这个问题在IIS中进行测试时为当地一切都工作正常..!
利亚姆·威尔顿

同样的问题在这里(IIS Url重写模块)。我通过将规则移到我的电脑上解决了Web.Release.config。参见weblogs.asp.net/srkirkland/…stackoverflow.com/questions/11032868/…
Swisher Sweet

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>

这将确保捕获该特定请求,不执行任何操作,并且最重要的是,停止执行,这样您的其他规则都不会运行。这是一个可靠的解决方案,请随时将其保留在配置文件中以进行生产。


1
不幸的是,这对我个人而言并不起作用,但是我可以确认这绝对是某种重写问题,因为我确实注释掉了web.config的重写部分,因此我可以正常运行。
马特

可能想从这里尝试解决方案:stackoverflow.com/a/30813200/375303。对我来说就像是一种魅力。
jerhewet

Visual Studio将在此处记录与DebugAttach.aspx有关的错误:%UserProfile%\ AppData \ Local \ Temp \ Visual Studio Web Debugger.log(如果您没有该文件-或者它是旧文件-那么您的问题可能与DebugAttach.aspx无关。)
Brandon S

就我而言,根本原因是正确的,但解决方法却不正确。对我来说,这<location path="debugattach.aspx"> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"> <clear /> </httpErrors> </system.webServer> </location>
可行

对我来说,问题是因为“ /debugattach.aspx”,但是解决方案也将erroMode更改为“ DetailedLocalOnly”。
什(Nashe)

30

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


为此,我什至没有使用网络共享,但是效果很好。
2014年

21

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


是的,有一个问题,从这里尝试了几个答案,但没有结果,您的答案真正帮助了我!
Vadzim Savenok '16年

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错误行也解决了该问题,我同意了,因为这样我便可以维护自定义错误处理并开始调试。

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


对我来说,同样的原因是,尝试启动调试时在日志中看到401响应,并且停用默认错误处理对我来说解决了“无法调试站点”问题。我不明白为什么当并且仅当使用vs启动调试时,甚至只有匿名访问和Web表单身份验证时,即使在我的登录页面上也会出现401。被激活。
弗雷德里克

这对我来说是修复为好,只是我有一个默认的错误路径集合,而不是显式定义一个401
tuespetre

这对我有用(我只是暂时删除了整个httperrors部分)。我之前尝试过的不起作用的事情是重新启动应用程序池并删除URL重写规则。
Nicholas Westby

这就是我的工作。然后我将我的自定义错误更改为@Pablo Romeo在此答案中
写道

2
将erroMode更改为“ DetailedLocalOnly”也为我解决了。调试器正在尝试打开“ /DebugAttach.aspx”,这使其转到了自定义错误页面,该页面在给定时间无法运行。
Nashe)


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


谢谢!!我整天都在扯头发,修复很简单。如果只有VS可以给出有意义的错误消息!
colincameron

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中的错误。


1
没错,这是一种解决方法,但是效果不佳,因为在提交或发布网站之前,很容易忘记删除这样的评论。
乔恩·亚当斯

1
您可以在web.config.release配置文件中移动这些行,因此当您进行发布时,它将仅处于已发布的版本中。那就是我所做的。
shalke

也许只是排除/debugattach.aspx就可以了。看看Peter Monks的评论
Daniel Fisher lennybacon 2014年

6

由于IIS中的应用程序池已停止,因此出现了相同的错误。启动应用程序池后,问题已解决。


也解决了我的问题!我发现我的DefaultAppPool已停止。感谢分享。我不明白为什么它停止了。
Jobert Enamno 2014年

5

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

希望这对其他人有用。


2
将所有者更改为谁?
dumbledad

5

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


3

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


3

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


2

担,

除了亚伦的建议,请尝试以下方法

  • 检查您的IIS网站中是否选择了集成Windows身份验证
  • 您可以使用Cassini代替IIS进行调试吗?

我按照此处的步骤打开了集成Windows身份验证:msdn.microsoft.com/en-us/library/x8a5axew.aspx但是我仍然遇到相同的错误(iis管理器显示警告,我无法同时使用挑战和基于登录的身份验证-我的网站使用表单身份验证)。我可以使用VS 2010内置的Web服务器调试站点,但是缺少功能。
Dan C

您是否尝试过在IIS中创建新网站并在其中部署代码?出于好奇,如果在Cassini中进行调试,会缺少哪些功能?就我所知,Cassini支持表单身份验证。
Keefu

“在IIS中创建新网站”是什么意思?这是一台装有新操作系统VS2010和IIS的新计算机。我在IIS中创建了一个新应用程序,并将其指向实际网站的文件夹(从备份中检索)。URL Rewrite在Cassini中似乎无法完全正常工作。另外,我们使用自定义模块在http和https(codeproject.com/KB/web-security/WebPageSecurity_v2.aspx)之间自动切换。
Dan C

卡西尼不支持URL重写2模块
citronas

2

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

解决方案很简单

  • 在中编辑主机文件 %SystemRoot%\System32\drivers\etc\

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


对于我来说,这是一颗瑰宝,完全忘记了设置主机文件的原因,并且想知道为什么当我切换到本地iis(用于https)时我的api无法正常工作。VS只在其中运行一个站点,但是一旦添加了第二个站点,就无法调试,这解决了它。
CDerrig

1

我今天遇到此错误是由于代码中的缺陷,该缺陷回发了大量时间,导致IIS充满了请求。这实际上锁定了IIS,因此当我尝试调试时,尝试启动调试器会“超时”。我只是重新启动了IIS,花费了几分钟,它解决了问题。

我确实希望这个错误不是通用的,似乎有几种不同的产生方法。


1

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

打开或关闭Windows功能的屏幕截图


1

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


1

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

我已修复它使我的网站可以运行。:D


1

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


1

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


1

我遇到了同样的问题,发现这是由于我Web.config在end标签之后错误地键入了一个字符而引起的。最后我的Web.config样子是这样的:</section>h。“ h”是结束标记后的额外字符。


0

删除这样的字符串:web.config中的targetFramework =“ 4.0”或将AppPool更改为适当的框架版本。



0

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


0

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


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被拒绝,从而导致调试器无法运行。删除此配置后,它将再次起作用。


0

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


0

我最近遇到了同样的错误,以我为例,结果发现存在重复的MIME类型。我最近添加了两个最初不在列表中显示的内容。IIS让我添加了它们,只有当我决定在诊断过程中再次检查站点的MIME类型时,IIS也会出现错误。它在web.config中引用了重复项。回到web.config文件后,我注意到已经添加了一个新的部分,其中包括两个最近添加的MIME类型。删除了那个部分,生活又好了!希望这可以帮助其他未能通过其他建议解决此问题的人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.