回答
也许你应该尝试:
- 停止开发服务器在任务栏中
- 从释放开关配置调试
是的,这是正常的。
Application_Start()
由IIS处理。
但是所有其他方法,例如Session_Start
以及除Application_Start()
之外的所有其他方法都可以正常调试。
Application_Start()
每个AppDomain被调用一次。如果你不打你的断点,这意味着已经创建的AppDomain,所以做到以下几点:
- 在你的快速启动栏,没有为VS Web服务器的图标(其在其中一个说: “本地主机某个端口”)。右键单击并选择“停止”或“关闭”。这应该杀死AppDomain。
- 如果您使用的是IIS,则需要手动重新启动您的站点。
- 或者,修改web config或Global.asax文件通常足以重新启动AppDomain。
- 重新启动您的调试,您应该现在打你的断点。
检查你的web应用程序是在调试模式(<compilation debug="true">
在web.config中)。
如果您使用由VS启动的开发人员的IIS,只需重新启动它或重建应用程序即可。
如果你在正常的IIS,你有两个选择:
- 对于Web站点配置了发展的文件夹(你VS网络部署项目)的工作,你只需要重新启动应用程序池集对于该网站并在第一次请求到达服务器之前开始调试(您可以在调试过程中始终重新启动应用程序池)。
- 对于在另一个文件夹甚至远程服务器上工作的网站,您必须附加到该过程。要做到这一点,您需要远程调试器安装在远程机器上或您自己的(取决于Web服务器位置),并使用
Debug - Attach to process
菜单,输入计算机名称,然后选择要调试的进程。它通常是以受管模式类型工作的w3wp.exe。
感谢您的答案。我通过VS使用IIS。 – mahdiahmadirad 2009-12-25 19:47:34
打破Application_Start()
的一个简单方法是使用System.Diagnostics.Debugger
类。您可以通过插入System.Diagnostics.Debugger.Break()
来强制应用程序中断,您希望调试器中断。
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
删除global.asax
并添加一个新的。在我的解决方案中,有一个global.asax
和一个global.asax.cs
。
所有方法(Session_Start
,Application_Start
,...)都在bot文件中,但只有global.asax
中的方法已经被考虑。所以,cs中的断点和代码不会做任何事情。
只有在重新创建文件后,才有适当的方法并且运行。
我遵循这里的说明:http://rossnelson.blogspot.ca/2005/11/fixing-globalasax-in-aspnet-20.html。 基本上,删除global.asax并添加一个全局应用程序类,它可以用一个代码在文件后面重新创建asax,然后我可以进入该文件。我在IIS上运行,它工作正常。 – cbeuker 2012-08-28 18:01:14
另一种方法来接受System.Diagnostics.Debugger.Break();
将
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
不应破坏代码,并应甚至开始调试如果服务开始与不同的权限。
这很好我试过了,它也适用于我...谢谢 – 2015-10-16 16:42:35
不要指望通过按f5立即调用Application_Start()函数。 Application_Start()仅在第一次请求应用程序时被调用。 奇怪而真实。
如果所有的答案不工作的,请尝试:
<compilation debug="true" ... />
在
web.config
。 ;)
- 1. 是否可以chrome调试iife javascript?
- 2. 是否可以调试Quartz.NET Windows服务?
- 3. 是否可以从Visual Studio调试QML?
- 4. ASIHTTPRequest是否可以重试?
- 5. Global.asax中的Application_OnStart是否可以使用缓存页面?
- 6. 是否可以使用另一个程序集中的Global.asax?
- 7. 可调用(obj)是否尝试调用?
- 8. 是否可以在Ruby on Rails中调试单元测试?
- 9. 是否可以从C#程序调用JIT调试器窗口?
- 10. 如何检测请求是否是Global.asax中的回调?
- 11. 是否可以从测试类中调用私有函数QT
- 12. 是否可以调试基于NativeActivity的应用程序?
- 13. 是否可以在LLVM-vs2014的源代码级进行调试?
- 14. 是否可以使用VS 2010远程调试Windows 8?
- 15. 是否可以从非Linux系统远程调试linux代码?
- 16. 是否可以写入Delphi调试器的扩展?
- 17. 是否可以使用bpython作为完整的调试器?
- 18. 是否可以调试在运行时编译的代码?
- 19. 是否可以调试从Play下载的android应用程序?
- 20. 单元测试是否可以进行P/Invoke调用?
- 21. 是否可以在VS2008中调试VS2010 .NET 4.0项目?
- 22. 是否可以将调试器附加到k6脚本?
- 23. 单元测试WCF调用,是否有可能以及如何?
- 24. 是否可以调试PL/Java(理想情况下来自Eclipse)?
- 25. 是否可以使用KDevelop来调试ruby应用程序?
- 26. 是否可以使用Monotouch评估版的IDE调试器?
- 27. 是否可以调试外部的ant任务?
- 28. 是否可以在Symfony2中调试php代码?
- 29. 是否可以在Flash Builder中调试flash cs4项目?
- 30. 是否可以调试Xamarin.Android绑定项目使用的Android库?
奇数,这被标记为答案,但有-2评级... – 2010-07-20 20:59:53
它有一个负评分,因为它是错误的。说你需要进行调试(或者你没有pdb文件)并且你需要在服务器启动时捕获服务器是正确的(因为这是在代码运行的时候),但是你不能附加到过程。你需要一个正在运行的进程来连接调试器,global.asax代码在启动的前几个毫秒内运行,所以它几乎是不可能的(没有使用[正确答案])(https://stackoverflow.com/a/ 4809464/542251))附加到该过程,因为它运行此代码 – Liam 2018-02-28 11:53:24