为什么visual studio .net 2008在添加global.asax文件后会失去调试能力?

时间:2009-05-22 15:56:44

标签: c# asp.net visual-studio-2008

我没有收到正常的错误消息,说调试未启用红色错误消息。如果我删除我的全局asax文件,我的代码将转到我的断点。如果我重新添加文件,项目将完全忽略任何断点。这是我的全局asax文件中的代码

Public Class Global_asax     继承System.Web.HttpApplication

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when the session is started
    Application("concurentUsers") += 1
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when the session ends
    If Session("loggedout") = Nothing Then
        Application("concurentUsers") += -1
    End If
End Sub

结束班

所以你可以看到它并不多。当运行项目 WITH 存在全局.asax文件时,我确实从visual studio收到以下消息框

“以下模块是在启用优化或没有调试信息的情况下构建的:(我的临时asp.net文件的路径)要调试此模块,请将项目构建配置更改为调试模式。要禁用此消息,请禁用'如果在启动'调试器选项时没有用户代码,则发出警告。

我试图删除这些临时文件,但随后导致项目完全取消,并获得红色错误消息框说明,并且必须从回收站恢复以使我的项目按顺序恢复。所以我非常讨厌我必须删除全局的asax文件才能调试项目(以及与之关联的任何代码都会丢弃项目文件)

P.S。一切都在调试模式下运行,并在Web配置中标记为这样。正如我所说,调试没有global.asax文件存在

4 个答案:

答案 0 :(得分:1)

发布global.asax和global.asax.cs的全部内容(如果存在)。我的猜测是global.asax顶部的Application指令有一个编译器指令或其中导致行为的东西(例如,/ debug-或/ debug:pdbonly可能导致这种行为)。

答案 1 :(得分:0)

作为附带问题,您应该使用Application.Lock+= -1也很奇怪。你应该-= 1

Application.Lock()
Application("concurentUsers") -= 1
Application.UnLock()

别介意并发的拼写。

答案 2 :(得分:0)

您可以尝试清除Temporary ASP.NET文件夹。

这有时会导致配置问题。

请勿删除该文件夹,只需删除其内容即可。

答案 3 :(得分:0)

这个问题在几个场合让我疯狂。我发现在推送到生产期间,我已将“配置”从Active(调试)更改为Release,并在Advanced compiler settings窗口(Project Properties / Compile / Advanced Compile Options)上设置“Enable Optimizations”选项。如果我稍后将配置类型设置回“Active(Debug)”,我往往忘记取消选中“Enable Optimizations”选项。发生这种情况时,我收到有关“已启用优化”或“没有调试信息”的错误消息。在过去,我一直在寻找“没有调试信息”,这让我偏离了轨道。

所以简短的回答是:仔细检查“启用优化”选项是否未选中,并且“生成调试信息:”在高级编译器设置中设置为完全或仅限pbd。

HTH,

詹姆斯。