ASP.Net:我如何找到此错误?

时间:2013-01-23 11:31:10

标签: asp.net

当我尝试运行ASP.Net页面时,我收到以下错误。它刚刚在开发过程中出现,我不知道原因是什么。

“发生OverflowException。对于Int32,值太大或太小。”

调试器中断的行完全没有任何帮助

Dim ApproxDate As TextBox = FormView1.FindControl("CurrentResultDateTextBox")

此行发生错误,因为在FormView1上调用findControl会导致数据绑定(执行SQL查询以返回数据集)。我假设错误位于某个对象数据源中,或者可能位于页面上的某个网格视图中,但调试器不会告诉我在哪里。大多数页面数据源以声明方式绑定(在源代码中的ASP标记中指定)

按F11运行超出异常将显示以下内容:

“13712696100373320501120906不是Int32的有效值。”

此处显示的值是页面使用的主SQL表的主键。大约有10个数据源使用该字段。同样,没有迹象表明错误发生在哪里。

那么如何调试这样的错误呢?我可以运行命令吗? IIS错误日志?第三方软件捕获错误?我会拿任何我能得到的东西

1 个答案:

答案 0 :(得分:0)

管理找到问题。诀窍是首先在IDE / Debug设置中禁用“仅我的代码”。然后你可以看到调用堆栈上的系统函数,虽然没有源代码,你可以点击这些函数来展开堆栈到其中一个web控件(在本例中是ListControl.PerformSelect函数)

如果在调试窗口中检查自动变量,它将显示错误中涉及的控件。从那里我在ID属性上添加了一个监视,以查看它是哪个控件,查找提供它的数据源,并发现错误。

您还可以将堆栈展开到ObjectDataSourceView,查看dataTable属性,并调用GetErrors()以查看问题。这将返回标记错误的数据行数组; RowError属性将显示任何给定行的错误消息。