2014-12-29 69 views
14

我正在使用Visual Studio 2013中的ASP.NET解决方案无法触及断点。 Visual Studio将成功打破其他解决方案的断点,并且此解决方案中的断点以前的工作。但在这个时候他们失败了。Visual Studio 2013未触及断点

我正在使用Visual Studio 2013 Ultimate,Update 4.它安装在Windows 8.1,64位上。

这是一个包含3个项目的MVC解决方案:BusinessEntities,DataAccessLayer(DAL)和一个Web项目。所有这些项目的断点失效。我甚至在家用控制器的Index ActionResult内部尝试了一个断点,但仍然无法在断点处停下来。

在Visual Studio功能区中,解决方案配置设置为“调试”。另外,配置管理器显示我的所有3个项目都有一个配置设置为调试。重新启动IIS,重新启动Visual Studio并重新启动不能解决此问题。选择生成>清理解决方案,生成>重建,然后调试>开始调试也没有解决它。

在web.config中,调试设置为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”的站点名称,并且在我的主机文件中有一个匹配条目。该站点使用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,没有以Admin身份运行,并加载了解决方案。 Web项目无法加载以下消息:Web应用程序项目[MySiteName]被配置为使用IIS。无法访问IIS元数据库。您没有足够的权限访问您计算机上的IIS网站。

本网站的某些部分最终将采用Active Directory身份验证。那么,我需要在IIS Express下运行该站点的解决方案,还是如果我希望在IIS下运行该站点,则始终以管理员身份运行VS?谢谢。

我找到了一个解决方案,可以通过“Web应用程序项目[MyApp]”配置为使用IIS的错误消息。无法访问IIS元数据库。您没有足够的权限访问您计算机上的IIS网站。“请按照本文中的步骤操作。 Error - Unable to access the IIS metabase

在授予我的帐户对intetsrv \ config文件夹的访问权后,Web项目在Visual Studio中正确加载,无需以管理员身份运行VS.

但现在当我启动网站时出现另一个警报:“无法在Web服务器上开始调试。 IIS不会列出与启动的URL匹配的网站。单击“帮助”以获取更多信息。“最初,我只点击了”创建虚拟目录“并再次启动,但同样的警报再次出现。

所以我从警报中选择了帮助按钮。这导致this MSDN page,其中提出了大约二十件事情来检查,与其他文章的链接的一半。我现在感觉有点像爱丽丝梦游仙境,向着兔子洞进一步前进。

2015/2/3更新:在本地IIS实例上运行此解决方案时,我的解决方法是以管理员身份运行Visual Studio。最终,我们将应用程序更改为使用IIS Express,然后放弃了该应用程序以获取同事构建的另一个解决方案。这个决定与这个问题无关。感谢大家的反馈和想法。

3/7/2016更新:目前我无法复制这个问题,因为我们去年在工作时没有解决方案。如果主持人能够解决这个问题,我将不胜感激。关闭这个选项并不符合我目前的情况,但也许别人会发现下面的建议有用,如果他们遇到这种情况。感谢所有提出建议的人。

+1

您是通过VS启动应用程序还是手动将调试器连接到w3wp.exe?你使用的是IIS还是Express? –

+1

谢谢保罗。我根据你的建议尝试了几件事,并将它们附加到原始帖子中。往上看。 –

+1

断点显示为红色圆圈(未填充) – Saravanan

回答

1

从我以往的经验,请考虑以下:

  • 检查你已经把破发点,一个正确的地方,你正在运行的相关网页或控制器
  • 右键点击破发点= >位置=>选中“允许源代码与原始版本不同”。如果你已经安装了resharper,这可能有帮助。

  • 如果您是通过Ajax调用呼叫,请确保您有在页面上而不是Java脚本错误(这个IE抓JS默认错误),有些时候是因为没有彻底建筑

  • ,所以清洗 解决方案(右键点击解决方案并选择“clean solution” 项目),然后选择“Rebuild Solution”。

  • 有些时候,那是因为你可能已经禁用构建选项 一些类库,所以在这种情况下,你需要完全重建那些 类的库。(您可以通过检查从“Build”菜单中选择 “Configuration Manager”项目找到它)

希望这些帮助

1

我之前遇到了这个问题,并解决了它后,我重新生成解决方案包。 (右击解决方案包并运行重建)

+1

您可以反编译.dll文件来检查编译过程是否正常。 – Clement

1

下面是我为这种场合保留的想法列表。

检查你的dll被引用的位置,并确保它是你正在尝试调试的代码。

检查构建时的处于正确模式:Debug/Release,因为它们可能会将dll放在不同的位置。

您是否依附于正确的过程?

对于IIS上的网站,您正在使用的代码与运行在IIS中的代码相同吗?

转到调试> Windows>模块,如果有相关的DLL在那里,右键单击它并加载符号。 如果它不在列表中,请尝试运行代码。有时即使它表示断点不会被触发,只是因为在你输入一个需要它的场景之前,dll并没有被加载。试试依赖于dll的场景,并且它可能只是打破了断点。

重新启动浏览器。你可能会从旧的dll缓存一些东西。

2

请确保:

  1. 工具 - >选项调试器“启用仅我的代码”是没有选
  2. 您正在运行在调试模式的应用程序,而不是发布模式
  3. 解决方案构建是最新的
+0

谢谢!我遇到了一些断点,但没有其他人。 – woodge