是否有可能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(); // ... }
- 将debugging器附加到IIS进程。
- 打开global.asax文件并放入一个断点。
- 为web.config文件添加空间并保存文件(这会导致当前的Web应用程序重置);
- 刷新/转到网站的网页。
- 当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:
- 对于网站被configuration为与开发文件夹(您VS web项目部署在哪里)一起工作,您只需重新启动该网站的应用程序池集,并在第一个请求到达服务器之前开始debugging(您可以随时在debugging期间重新启动应用程序池)。
- 对于在另一个文件夹甚至远程服务器上工作的网站,您必须附加到该过程。 要做到这一点,您需要远程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_Start
, Application_Start
,…)都在bot文件中,但只有global.asax
已经被考虑。 所以,cs中的断点和代码不会做任何事情。
只有在重新创build文件后, global.asax.cs
才有适当的方法并运行。
不要期望通过按f5来立即调用Application_Start()函数。 Application_Start()仅在第一次请求应用程序时被调用。 奇怪而真实。
如果所有的答案都不起作用,请尝试:
<compilation debug="true" ... />
在web.config
。 ;)