我在我的ASP.NET代码中有一行C#,看起来像这样:
DropDownList ddlStates = (DropDownList)fvAccountSummary.FindControl("ddlStates");DropDownList控件是在页的标记中显式声明的,而不是动态创建的。它位于FormView控件的内部。当我的代码到达这一行时,我将得到一个带有消息"Value am large or too line for an Int32“的值。这段代码以前是有效的,现在已经投入生产了。我启动了VS2008来对站点进行一些更改,但是在进行任何更改之前,我从页面得到了这个异常。有人见过这个吗?
发布于 2008-09-17 20:02:08
如果这是堆栈跟踪,那么它来自数据绑定,而不是来自您发布的行。有没有可能你有一些非常大的数据集?我见过6000页的GridView溢出Int16,尽管看起来不太可能真的溢出Int32……
例如,检查以确保您将正确的数据传递到数据源的startpageIndex或pageSize中。
发布于 2008-09-17 17:40:50
您是否100%确定这就是抛出异常的代码行?我非常确定FindControl方法不能抛出ArithmeticException。当然,我以前也被认为是错的。:)
发布于 2008-09-17 18:21:36
我以前在C#/.NET中见过ArithmeticException在奇怪的地方抛出,那是当我使用p/invoke来调用非托管.dll与USB设备对话时。
崩溃是一致的,而且总是在同一个地方。当然,这个地方与崩溃完全无关(我认为这是一个基本的赋值,比如int =4或类似的愚蠢的东西)
我希望有一个幸福的结局告诉你,但我从来没有设法完全追查到这个问题。我强烈认为原因在于非托管代码,它以某种方式损坏了内存,甚至可能释放了托管内存。(删除对非托管代码的调用使问题消失)
我要传达的信息是:您是否在调用非托管代码?如果是这样的话,我的建议是你应该把你的调试技能集中在那里:)
https://stackoverflow.com/questions/85588
复制相似问题