Asp.net global.asax断点未命中

Asp.net global.asax断点未命中,asp.net,global-asax,breakpoints,Asp.net,Global Asax,Breakpoints,我的ASP.NET应用程序中有一些C#代码,它们位于Global.asax.cscode文件中。在应用程序启动、会话启动和应用程序启动请求中,我设置了一些断点。然而,这些都没有被击中。我正在使用VS8在本地机器上工作 以下是我尝试过的: 已停止ASP开发服务器 已删除所有ASP.NET临时文件 创建新的Global.asax 关闭VS和打开备份 清理和重建项目 在尝试这些之后,断点将不会命中 你知道为什么会这样吗?我遇到了同样的问题。我假设您使用的是本地IIS,而不是VS开发服务器。如果是这

我的ASP.NET应用程序中有一些C#代码,它们位于
Global.asax.cs
code文件中。在
应用程序启动
会话启动
应用程序启动请求
中,我设置了一些断点。然而,这些都没有被击中。我正在使用VS8在本地机器上工作

以下是我尝试过的:

  • 已停止ASP开发服务器
  • 已删除所有ASP.NET临时文件
  • 创建新的
    Global.asax
  • 关闭VS和打开备份
  • 清理和重建项目
在尝试这些之后,断点将不会命中


你知道为什么会这样吗?

我遇到了同样的问题。我假设您使用的是本地IIS,而不是VS开发服务器。如果是这种情况,您将无法在Global.asax.cs文件中调试/单步执行此代码,因为在附加调试器时,此代码已在IIS中执行。但是,如果使用Dev服务器,则可以访问此代码,因为调试器已经附加

因此,在项目属性中更改服务器以使用VisualStudio开发服务器


通过右键单击Visual Studio中的项目
项目属性
Web选项卡
使用Visual Studio Development Server

可以找到此选项,帮助我添加了:


System.Diagnostics.Debugger.Break()
到该
应用程序启动()
方法。

对于我正在处理的项目,在选项卡中选择了“启动外部程序”选项:

Visual Studio>项目属性>Web

这导致断点未被命中


将“开始操作”更改为“当前页面”为我解决了此问题。

如另一个答案中所述,Global.asax代码将在调试器有机会连接之前运行。要想绕过这个问题,您可以开始调试,然后进入IIS并停止/启动应用程序,然后让调试器重新启动应用程序。

我遇到过两次这个问题。第一个项目发生在我身上,我去了项目属性->构建->高级。。。并从“调试信息”下拉列表中选择“完整”

第二次,我的global.asax中的断点没有被击中,但如果我将鼠标悬停在断点上,它会发出警告:“源代码与原始版本不同。”

我最终发现,在本例中,我制作了该项目的备份副本以保留代码,并正在使用该副本。即使它位于不同的文件夹中,它仍在使用dll作为原始文件的虚拟目录:

所以我在Project Properties->Web->Project URL中更改了它。我刚把端口改成了,它工作了


它提示我创建虚拟目录,我说是的,从那时起就没有断点问题。

如果您不想使用Visual Studio Development Server和IIS,可以执行以下操作(在VS2015 Professional中测试)

1) 应用程序池处于运行状态-通过从Web应用程序访问页面,确保已使用的应用程序池正在运行(可能由于空闲超时而停止)

2) 附加到进程-
Ctrl-Alt-p
调试->附加到进程
->查找与应用程序对应的w3wp进程

通过使用创建最近连接的进程的快捷方式,可以大大加快连接到进程的速度

3) 应用程序池回收-通过输入IIS并对其进行回收,或者更快地输入web.config,进行无效更改(在标记外放置一些空白)并保存,确保应用程序池回收

4) 开始调试-对web应用程序中的任何页面执行请求以强制其初始化。您应该能够在
Global.asax

protected void Application_Start()
void Application_BeginRequest(Object sender, EventArgs e)
protected void Session_Start(object sender, EventArgs e)

为什么不试着把一些System.Diagnostics.Debug.WriteLine(…);在每个事件中,并在从Visual Studio运行解决方案时检查输出窗口?你看到什么了吗?看到了吗?对你的情况有帮助吗?你能粘贴这些方法的实际声明吗?可能您的声明不正确。谢谢您的快速回复。然而,这些都不起作用,即使是链接中的内容。顺便说一下,我处于调试模式,页面代码中的断点确实会被命中。请尝试改用IIs,看看它们是否会命中VS 2013 Visual Studio Development Server,同时@Ofiris answer对VS 2019没有帮助您按照上述步骤操作,但在Web选项卡上,查看服务器部分并选择IIs Express。我使用的是本地IIS,断点不起作用,但切换到IIS Express修复了问题。虽然不完美,但很有用:输入web.config,进行无效更改(在标记外放置一些空白)并保存它。应得+1:)