0

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

“发生溢出异常。对于 Int32,值太大或太小。”

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

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

此行发生错误是因为在 FormView1 上调用 findControl 会导致它进行数据绑定(执行 SQL 查询以返回数据集)。我假设错误位于对象数据源之一或页面上的网格视图之一中,但调试器不会告诉我在哪里。大部分页面数据源都是以声明方式绑定的(在源中的 ASP 标签中指定)

按 F11 跳过异常会显示以下内容:

“13712696100373320501120906 不是 Int32 的有效值。”

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

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

4

1 回答 1

0

设法找到问题。诀窍是首先在 IDE/Debug 设置中禁用“只是我的代码”。然后您可以在调用堆栈上看到系统函数,虽然没有源代码,但您可以单击这些函数将堆栈展开到 Web 控件之一(在本例中为 ListControl.PerformSelect 函数)

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

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

于 2013-01-24T11:20:12.090 回答