是否有可能debuggingGlobal.asax?

我无法debuggingglobal.asax文件!

我在Application_Start()方法中有一些代码,但是当我在方法中设置一个断点时,它被忽略了!

这是正常的吗?

也许你应该尝试:

  • 在任务栏中停止开发服务器
  • 将configuration从发布切换到debugging

中断Application_Start()一个简单方法是使用System.Diagnostics.Debugger类。 您可以通过插入System.Diagnostics.Debugger.Break()来强制应用程序中断,您希望debugging程序中断。

 void Application_Start(object sender, EventArgs e) { System.Diagnostics.Debugger.Break(); // ... } 
  1. 将debugging器附加到IIS进程。
  2. 打开global.asax文件并放入一个断点。
  3. 为web.config文件添加空间并保存文件(这会导致当前的Web应用程序重置);
  4. 刷新/转到网站的网页。
  5. 当debugging器停在你的断点时惊奇地看着。 🙂

每个AppDomain调用一次Application_Start() 。 如果你没有达到你的断点,这意味着AppDomain已经被创build,所以做到以下几点:

  • 在您的快速启动栏中,有一个VS Web服务器的图标(其中显示“本地主机某个端口”)。 右键单击并select“停止”或“closures”。 这应该杀死AppDomain。
    • 如果您使用IIS,则需要手动重新启动网站。
    • 另外,修改web config或Global.asax文件通常足以重新启动AppDomain。
  • 重新启动你的debugging,你现在应该打破你的断点。

检查您的Web应用程序是否处于debugging模式(web.config中的<compilation debug="true"> )。

如果您使用由VS启动的开发人员的IIS,只需重新启动它或重build应用程序。

如果你在正常的IIS上,你有两个select:

  1. 对于网站被configuration为与开发文件夹(您VS web项目部署在哪里)一起工作,您只需重新启动该网站的应用程序池集,并在第一个请求到达服务器之前开始debugging(您可以随时在debugging期间重新启动应用程序池)。
  2. 对于在另一个文件夹甚至远程服务器上工作的网站,您必须附加到该过程。 要做到这一点,您需要远程debugging器安装在远程机器上或您自己的(取决于Web服务器位置),并使用Debug - Attach to process菜单,input计算机名称,然后select一个进程debugging。 它通常是一个工作在托pipe模式types的w3wp.exe。

是的,这是正常的。

Application_Start()由IIS处理。

但是除了Application_Start()之外的所有其他方法(例如Session_Start )和其他所有方法都可以正常debugging。

接受的System.Diagnostics.Debugger.Break();另一种替代方法System.Diagnostics.Debugger.Break(); 将会

 void Application_Start(object sender, EventArgs e) { System.Diagnostics.Debugger.Launch(); //... } 

不应该破坏代码,即使服务是以不同的权限启动,也应该启动debugging器。

删除global.asax并添加一个新的。 在我的解决scheme中,有一个global.asax和一个global.asax.cs

所有的方法( Session_StartApplication_Start ,…)都在bot文件中,但只有global.asax已经被考虑。 所以,cs中的断点和代码不会做任何事情。
只有在重新创build文件后, global.asax.cs才有适当的方法并运行。

不要期望通过按f5来立即调用Application_Start()函数。 Application_Start()仅在第一次请求应用程序时被调用。 奇怪而真实。

如果所有的答案都不起作用,请尝试:

 <compilation debug="true" ... /> 

web.config 。 ;)