我无法调试global.asax文件!
我在Application_Start()
方法中有一些代码,但是当我在方法中设置断点时,它会被忽略!
这是正常的吗?
答案 0 :(得分:87)
中断Application_Start()
的一种简单方法是使用System.Diagnostics.Debugger
类。您可以通过将System.Diagnostics.Debugger.Break()
插入到希望调试器中断的位置来强制应用程序中断。
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
答案 1 :(得分:64)
答案 2 :(得分:9)
Application_Start()
。如果您没有访问断点,则表示已创建AppDomain,请执行以下操作:
答案 3 :(得分:7)
也许你应该尝试:
答案 4 :(得分:7)
检查您的Web应用程序是否处于调试模式(web.config中为<compilation debug="true">
)。
如果您正在使用由VS启动的开发人员的IIS,只需重新启动它或重建应用程序。
如果您使用普通IIS,则有两种选择:
Debug - Attach to process
菜单,输入计算机名称,然后选择要调试的进程。它通常是以托管模式类型工作的w3wp.exe。答案 5 :(得分:5)
是的,这很正常。
Application_Start()
由IIS处理。
但除了Session_Start
之外的所有其他方法(例如Application_Start()
)和所有其他方法都可以正常调试。
答案 6 :(得分:3)
接受的System.Diagnostics.Debugger.Break();
的另一种替代方法是
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
不应该破坏代码,即使服务以不同的权限启动,也应该启动调试器。
答案 7 :(得分:2)
删除global.asax
并添加新的global.asax
。在我的解决方案中,有一个global.asax.cs
和一个Session_Start
。
所有方法(Application_Start
,global.asax
,...)都在机器人文件中,但只考虑了global.asax.cs
中的方法。因此,cs中的断点和代码不会做任何事情
只有在重新创建文件后,{{1}}才有适当的方法并运行。
答案 8 :(得分:0)
不要指望按f5立即调用Application_Start()函数。 仅在首次请求应用程序时调用Application_Start()。 奇怪但真实。
答案 9 :(得分:0)
如果所有答案都不起作用,请尝试:
<compilation debug="true" ... />
web.config
中的。 ;)
答案 10 :(得分:0)
对我来说,在连接调试器时,我的调试断点已在IIS中执行。因此解决方案是用少量空间更改global.asax并保存文件。刷新后,我的断点被击中。
解决方案在这里: https://wakeupandcode.com/hitting-breakpoints-in-global-asax/