C# FindControl()方法引发算术异常?
我的ASP.NET代码中有一行C#,如下所示:C# FindControl()方法引发算术异常?,c#,asp.net,C#,Asp.net,我的ASP.NET代码中有一行C#,如下所示: DropDownList ddlStates = (DropDownList)fvAccountSummary.FindControl("ddlStates"); DropDownList控件在页面上的标记中显式声明,而不是动态创建。它位于FormView控件内部。当我的代码到达这一行时,我得到一个算术异常,消息是“值对于Int32来说太大或太小。”这段代码以前已经工作过,现在正在生产中。我启动了VS2008来对站点进行一些更改,但是在我更改任何
DropDownList ddlStates = (DropDownList)fvAccountSummary.FindControl("ddlStates");
DropDownList控件在页面上的标记中显式声明,而不是动态创建。它位于FormView控件内部。当我的代码到达这一行时,我得到一个算术异常,消息是“值对于Int32来说太大或太小。”这段代码以前已经工作过,现在正在生产中。我启动了VS2008来对站点进行一些更改,但是在我更改任何内容之前,我从页面中得到了这个异常。以前有人见过这个吗?您是否100%确定这是引发异常的代码行?我非常确定FindControl方法不能抛出算术异常。当然,我以前就知道我错了……:) 您是否100%确定这是引发异常的代码行?我非常确定FindControl方法不能抛出算术异常。当然,我以前就知道我错了……:) 我以前在C#/.NET中见过算术异常被抛出到奇怪的地方,那是在我使用p/invoke对一个非托管的.dll与USB设备进行通信时 那次撞车是始终如一的,而且总是在同一个地方。当然,这个地方与崩溃完全无关(我认为这是一个基本的赋值,比如int i=4或类似的傻事) 我很想告诉你一个幸福的结局,但我从来没能完全解决这个问题。我坚信原因在于非托管代码,它以某种方式破坏了内存,甚至可能释放了托管内存。(删除对非托管代码的调用使问题消失)
我要传达的信息是:您是否正在调用非托管代码?如果是这样的话,我的建议是你把你的调试技能集中在那里:)我以前在C#/.NET中看到算术异常被抛出到奇怪的地方,那是在我使用p/invoke对一个非托管的.dll与USB设备进行通信时 那次撞车是始终如一的,而且总是在同一个地方。当然,这个地方与崩溃完全无关(我认为这是一个基本的赋值,比如int i=4或类似的傻事) 我很想告诉你一个幸福的结局,但我从来没能完全解决这个问题。我坚信原因在于非托管代码,它以某种方式破坏了内存,甚至可能释放了托管内存。(删除对非托管代码的调用使问题消失)
我要传达的信息是:您是否正在调用非托管代码?如果是这样,我的建议是您将调试技能集中在这里:)如果是stacktrace,它来自数据绑定,而不是您发布的行。您是否有可能拥有一些非常大的数据集?我看到一个6000页的GridView溢出了一个Int16,尽管看起来不太可能会溢出一个Int32
检查以确保您正在将正常数据传递到数据源的startpageIndex或pageSize中,例如。如果是stacktrace,则它来自数据绑定,而不是您发布的行。您是否有可能拥有一些非常大的数据集?我看到一个6000页的GridView溢出了一个Int16,尽管看起来不太可能会溢出一个Int32
检查以确保您正在将正常数据传递到数据源的startpageIndex或pageSize中,例如。您能给我们提供更多的代码吗?您也能提供堆栈跟踪吗?知道算术异常来自何处会很有用。可能FormView处于无效状态或其他状态?您能给我们提供更多的代码吗?您也能提供堆栈跟踪吗?知道算术异常来自何处会很有用。可能FormView处于无效状态或其他状态?嗨,Isak。我没有做任何非托管代码。我还没有足够的勇气去尝试这很可能是米克尔的问题,谢谢你的链接。(虽然我没有办法验证,因为我所说的代码早就被放弃了)嗨,伊萨克。我没有做任何非托管代码。我还没有足够的勇气去尝试这很可能是米克尔的问题,谢谢你的链接。(尽管我无法验证,因为我所说的代码早已被放弃)querystring传递的字符串长度为8位数。我本该抓住的愚蠢错误。我以前从未见过这种错误。谢谢你给我指明了正确的方向!查询字符串传递的字符串长度为8位数。我本该抓住的愚蠢错误。我以前从未见过这种错误。谢谢你给我指明了正确的方向!