当我尝试运行ASP.Net页面时,我收到以下错误。它刚刚在开发过程中出现,我不知道原因是什么。
“发生OverflowException。对于Int32,值太大或太小。”
调试器中断的行完全没有任何帮助
Dim ApproxDate As TextBox = FormView1.FindControl("CurrentResultDateTextBox")
此行发生错误,因为在FormView1上调用findControl会导致数据绑定(执行SQL查询以返回数据集)。我假设错误位于某个对象数据源中,或者可能位于页面上的某个网格视图中,但调试器不会告诉我在哪里。大多数页面数据源以声明方式绑定(在源代码中的ASP标记中指定)
按F11运行超出异常将显示以下内容:
“13712696100373320501120906不是Int32的有效值。”
此处显示的值是页面使用的主SQL表的主键。大约有10个数据源使用该字段。同样,没有迹象表明错误发生在哪里。
那么如何调试这样的错误呢?我可以运行命令吗? IIS错误日志?第三方软件捕获错误?我会拿任何我能得到的东西
答案 0 :(得分:0)
管理找到问题。诀窍是首先在IDE / Debug设置中禁用“仅我的代码”。然后你可以看到调用堆栈上的系统函数,虽然没有源代码,你可以点击这些函数来展开堆栈到其中一个web控件(在本例中是ListControl.PerformSelect函数)
如果在调试窗口中检查自动变量,它将显示错误中涉及的控件。从那里我在ID属性上添加了一个监视,以查看它是哪个控件,查找提供它的数据源,并发现错误。
您还可以将堆栈展开到ObjectDataSourceView,查看dataTable属性,并调用GetErrors()以查看问题。这将返回标记错误的数据行数组; RowError属性将显示任何给定行的错误消息。