我正在使用Visual Studio 2013开发一个ASP.NET解决方案,但无法命中断点。在其他解决方案上,Visual Studio可以成功地命中断点,而在这个解决方案中,以前的断点工作失败了。我使用的是Visual Studio 2013 Ultimate,更新版本为4。我的操作系统是64位的Windows 8.1。
这是一个包含三个项目的MVC解决方案:BusinessEntities、DataAccessLayer(DAL)和Web项目。在所有这些项目中,断点都无法正常工作。我甚至尝试了在主页控制器的Index ActionResult中设置一个断点,但它仍然无法停在那里。
在Visual Studio的功能区中,解决方案配置设置为Debug。此外,配置管理器显示我所有三个项目都具有Debug配置。重新启动IIS、重新启动Visual Studio和重新启动计算机都没有解决这个问题。选择“生成”>“清理解决方案”,“生成”>“重新生成”,然后“调试”>“开始调试”也无法解决它。
在web.config中,debug在此节点中设置为true:
在我的项目的bin目录中有.pdb文件。我验证了当解决方案被清理时它们会被删除,而在重新构建时会被重新创建。
还需要检查什么?我真的需要让断点在这个解决方案中工作。谢谢。
在IIS中,Web应用程序具有类似“local.mysite”的站点名称,并且在我的hosts文件中有匹配的条目。该站点使用DefaultAppPool,该池使用.NET CLR版本4.0和集成的托管管道模式。我的解决方案中的3个应用程序针对.NET Framework 4。
如果我切换回IIS Express,则调试器开始工作。IIS的版本更改为8.0,进程名称当然是iisexpress。从技术上讲,我不必在我的工作站上在IIS下运行此应用程序,但我更愿意这样做。我在IIS中配置或忽略了什么导致调试器失败?
在属性页面的Web选项卡中审查项目服务器设置时,我注意到下拉菜单被设置为“ IIS Express”。切换到“本地IIS”后,我被提示以管理员身份运行VS。这样做后,我能够将服务器更改为本地IIS,并启动调试器。我提交了更改,关闭了VS,以非管理员身份启动VS,并加载解决方案。网站项目无法加载,显示以下消息:“Web应用程序项目[MySiteName]配置为使用IIS。无法访问IIS元数据库。您没有足够的权限访问计算机上的IIS网站。”
最终,该网站的某些部分将采用Active Directory身份验证。那么,我的解决方案是在IIS Express下运行站点,或者始终以管理员身份运行VS,如果我希望在IIS下运行站点?谢谢。
我找到了一个解决方案,以克服“Web应用程序项目[MyApp]配置为使用IIS。无法访问IIS Metabase。您没有足够的权限访问计算机上的IIS网站。”的错误消息。请按照此帖子中的步骤。错误-无法访问IIS元数据库 在将我的帐户授权访问intetsrv \ config文件夹后,Web项目在Visual Studio中正确加载,而无需以管理员身份运行VS。
但是现在当我启动网站时,会出现另一个警报:“无法在Web服务器上启动调试。 IIS不列出与启动的URL匹配的Web站点。单击“帮助”以获取更多信息。”最初,我只是单击“创建虚拟目录”,然后再次启动,但是同样的警报重新出现。
我从警告框中选择了帮助按钮。这导致此MSDN页面,其中提出了大约两打要检查的事情,还有大约一半的链接到其他文章。我现在感觉有点像《爱丽丝梦游仙境》中的爱丽丝,一路往兔子洞里走。
这是一个包含三个项目的MVC解决方案:BusinessEntities、DataAccessLayer(DAL)和Web项目。在所有这些项目中,断点都无法正常工作。我甚至尝试了在主页控制器的Index ActionResult中设置一个断点,但它仍然无法停在那里。
在Visual Studio的功能区中,解决方案配置设置为Debug。此外,配置管理器显示我所有三个项目都具有Debug配置。重新启动IIS、重新启动Visual Studio和重新启动计算机都没有解决这个问题。选择“生成”>“清理解决方案”,“生成”>“重新生成”,然后“调试”>“开始调试”也无法解决它。
在web.config中,debug在此节点中设置为true:
<system.web>
<compilation debug="true" targetFramework="4.0" />
在我的项目的bin目录中有.pdb文件。我验证了当解决方案被清理时它们会被删除,而在重新构建时会被重新创建。
还需要检查什么?我真的需要让断点在这个解决方案中工作。谢谢。
========
2014年12月30日更新 - 以下是我尝试的几件事,根据@paul.abbott.wa.us的评论。为了清晰起见,删除了我发表的一些评论,并将它们追加在这里。
========
我是通过VS启动应用程序,并在IIS下运行它。IIS的版本是8.5。当使用System.Diagnostics.Process.GetCurrentProcess().ProcessName公开进程名称时,它是w3wp。在IIS中,Web应用程序具有类似“local.mysite”的站点名称,并且在我的hosts文件中有匹配的条目。该站点使用DefaultAppPool,该池使用.NET CLR版本4.0和集成的托管管道模式。我的解决方案中的3个应用程序针对.NET Framework 4。
如果我切换回IIS Express,则调试器开始工作。IIS的版本更改为8.0,进程名称当然是iisexpress。从技术上讲,我不必在我的工作站上在IIS下运行此应用程序,但我更愿意这样做。我在IIS中配置或忽略了什么导致调试器失败?
在属性页面的Web选项卡中审查项目服务器设置时,我注意到下拉菜单被设置为“ IIS Express”。切换到“本地IIS”后,我被提示以管理员身份运行VS。这样做后,我能够将服务器更改为本地IIS,并启动调试器。我提交了更改,关闭了VS,以非管理员身份启动VS,并加载解决方案。网站项目无法加载,显示以下消息:“Web应用程序项目[MySiteName]配置为使用IIS。无法访问IIS元数据库。您没有足够的权限访问计算机上的IIS网站。”
最终,该网站的某些部分将采用Active Directory身份验证。那么,我的解决方案是在IIS Express下运行站点,或者始终以管理员身份运行VS,如果我希望在IIS下运行站点?谢谢。
我找到了一个解决方案,以克服“Web应用程序项目[MyApp]配置为使用IIS。无法访问IIS Metabase。您没有足够的权限访问计算机上的IIS网站。”的错误消息。请按照此帖子中的步骤。错误-无法访问IIS元数据库 在将我的帐户授权访问intetsrv \ config文件夹后,Web项目在Visual Studio中正确加载,而无需以管理员身份运行VS。
但是现在当我启动网站时,会出现另一个警报:“无法在Web服务器上启动调试。 IIS不列出与启动的URL匹配的Web站点。单击“帮助”以获取更多信息。”最初,我只是单击“创建虚拟目录”,然后再次启动,但是同样的警报重新出现。
我从警告框中选择了帮助按钮。这导致此MSDN页面,其中提出了大约两打要检查的事情,还有大约一半的链接到其他文章。我现在感觉有点像《爱丽丝梦游仙境》中的爱丽丝,一路往兔子洞里走。
2015年2月3日更新:当我在本地IIS实例上运行时,我的解决方法是以管理员身份运行Visual Studio。最终,我们改用IIS Express来运行应用程序,然后放弃了该应用程序,转而使用同事构建的另一种解决方案。这个决定与这个问题无关。谢谢大家的反馈和想法。
2016年3月7日更新:目前我无法复制此问题,因为我们已经没有去年我处理它时的解决方案状态。如果有管理员能够关闭这个问题,我将不胜感激。关闭此问题的选项与我的当前情况不符,但也许其他人在遇到这种情况时会发现以下建议有用。感谢所有提出建议的人。