FindControl()方法抛出ArithmeticException?

时间:2008-09-17 17:24:49

标签: c# asp.net

我的ASP.NET代码背后有一行C#,如下所示:

DropDownList ddlStates = (DropDownList)fvAccountSummary.FindControl("ddlStates");

DropDownList控件在页面上的标记中显式声明,而不是动态创建的。它位于FormView控件内。当我的代码遇到这一行时,我收到一个ArithmeticException,消息“对于Int32,值太大或太小”。此代码以前有效,现在正在生产中。我启动了VS2008以对网站进行一些更改,但在我更改任何内容之前,我从页面中获得了此异常。有人以前看过这个吗?

3 个答案:

答案 0 :(得分:3)

如果这是堆栈跟踪,它来自数据绑定,而不是来自您发布的行。您是否有可能拥有一些非常大的数据集?我已经看到一个6000页的GridView溢出Int16,虽然你似乎不太可能实际溢出Int32 ...

检查以确保您将合理的数据传递到数据源的startpageIndex或pageSize,例如。

答案 1 :(得分:0)

您是否100%确定是抛出异常的代码行?我很确定FindControl方法不能抛出ArithmeticException。当然,我之前已经知道错了...... :)

答案 2 :(得分:0)

我已经看到在C#/ .NET之前将QuithmeticException抛出到奇怪的地方,当我使用p / invoke处理与USB设备通信的非托管.dll时。

崩溃是一致的,总是在同一个地方。当然,这个地方与崩溃完全无关(我认为这是一个基本的价值分配,比如int i = 4或类似的傻事)

我想告诉你一个圆满的结局,但我从来没有完全找到问题所在。我坚信原因在于非托管代码,并且它以某种方式损坏了内存,甚至可能免费管理内存。 (删除对非托管代码的调用使问题消失)

我发送的消息是:您是否正在调用非托管代码?如果是这样,我的建议是你将调试技巧集中在那里:)

相关问题