无法在global.asax/Application_Start中断

jga*_*fin 26 c# visual-studio-2010 visual-studio-debugging asp.net-mvc-3

我在第一行得到了一个断点Application_Start(),但Visual Studio不会破坏它.

Visual Studio已将自己附加到IIS工作进程:

自动连接到机器'SRD00510'上的'[2092] w3wp.exe'处理成功.

我在家庭控制器中的断点确实有效.

更新

我试过了:

  • iisreset
  • 重启视觉工作室
  • 重新启动.
  • 试图重新安装aspnet(aspnet_regiis -i)

Joc*_*hen 53

阅读您的问题,我假设您使用IIS进行调试,而不是Visual Studio Development Server.

在这种情况下,调试应用程序启动很棘手,因为它仅在启动或回收应用程序池时调用一次.当Visual Studio附加到进程时,Application_Start已经在运行.

诀窍是使应用程序池回收而不会杀死您附加的进程.

请执行下列操作:

  1. 在Visual Studio中(必须以管理员身份运行)在global.asax.cs中设置断点并像往常一样开始调试(F5).该页面将在Web浏览器中打开,但不会触发断点.
  2. 现在的诀窍:使用文本编辑器,打开来自IIS服务的web.config,更改它(例如在某处输入一个空行)并保存.与在IIS中回收应用程序池相比,这使得应用程序池可以循环(并在下次调用网站时通过global.asax.cs中的Application_Start运行),而不会终止您附加的进程.
  3. 在Web浏览器中,重新加载页面.现在应该打破断点!

这对我有用(IIS 7.5,VS2015).


Vin*_*cio 14

将此行放在Application_Start()中.

Debugger.Break();
Run Code Online (Sandbox Code Playgroud)

这将显示一个对话框,允许您选择调试器.您可能需要重新启动应用程序池.


jru*_*ell 6

Application_Start()应用程序启动时只运行一次.重启应用程序的一些事情是:

  • web.config更改
  • 回收工作进程 - 您可以在IIS管理器中执行此操作,也可以iisreset在命令行中运行.