2013-03-04 223 views
1

我有一个ASP.net C#4.0网站项目。我使用jQuery AJAX回发调用ASHX处理程序。通常当我调试C#时,我使用这个方法Debug> Attach to Process>选择w3wp.exe并开始调试。C#:无法调试ASHX处理程序

当我使用ASHX处理程序执行此操作时,Visual Studio会提示“断点不会被命中,没有为此文档加载符号”。果然,当我对处理程序运行AJAX调用时,断点不会被打中。

令我困惑的是,我可以调试C#文件,否则,即ASPX文件的代码隐藏。

+1

如果您拥有该项目以及源代码,为什么需要手动绑定调试器? – 2013-03-04 13:41:40

+0

由于该网站是内容管理解决方案的一部分,因此需要登录。我更愿意使用我现有的Web浏览器会话,否则我必须跳过更多的步骤以获取我想要调试的部分。你记下我的意思吗?尼斯。 – 2013-03-04 13:43:00

+0

对不起格兰特 - 我当时放肆 – 2013-03-04 13:48:16

回答

2

事实证明,Visual Studio实际上不会加载调试符号,直到它实际尝试运行ASHX处理程序。我的问题变成了其他地方 - jQuery代码中称为处理程序的错误。

我一开始并没有看到这个错误,所以假设处理程序被击中。一旦处理程序被调用,VS将允许你调试它。我没有意识到ASHX处理程序的行为如此,我认为它们就像普通的C#文件一样工作。

+0

他们都是这样工作的。您会注意到,在aspx页面中更改某些内容并保存并设置断点将导致“错误”断点符号,当您刷新页面_then_时,您可以看到所有正在加载的符号。 – 2013-03-04 17:52:58

0

这通常是因为你在看什么(代码)不是你正在运行。

尝试抛出Debugger.Launch();并查看是否正确连接调试器。如果是这样,那么你的问题只是你正在查看与调试无关的代码的不同副本/版本

0

是否只有一个w3wp.exe尝试右击你的asp.net项目选择“调试”和“从上下文菜单中启动一个新实例“。

+0

是的只有一个w3wp.exe的例子 – 2013-03-04 13:45:57

+0

http://forums.asp.net/t/1505059.aspx/1看看这是否有帮助 – dev123 2013-03-04 14:55:06