2008-09-17 75 views
0

我有一個行的C#在我的ASP.NET代碼後面,看起來像這樣:FindControl()方法拋出ArithmeticException?

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

DropDownList控件在頁面上的標記明確聲明,不動態創建。它位於FormView控件的內部。當我的代碼碰到這一行時,我得到一個ArithmeticException,並顯示「Value對於Int32來說太大或太小」。此代碼以前已工作,現在正在生產。我啓動了VS2008對網站進行了一些更改,但在更改任何內容之前,我從頁面中獲得了此例外。任何人都看過這個嗎?

+0

你能再給我們一些代碼嗎? – lordscarlet 2008-09-17 17:32:01

+0

你也可以提供堆棧跟蹤嗎?知道ArithmeticException從哪裏來的將是有用的。 也許FormView處於無效狀態或什麼東西? – 2008-09-17 17:35:53

回答

3

如果這是堆棧跟蹤,它來自數據綁定,而不是你張貼的行。是否有可能有一些非常大的數據集?我已經看到一個6000頁的GridView溢出Int16,雖然它似乎不太可能你實際上溢出一個Int32 ...

檢查,以確保你傳遞到合理的數據,比如startpageIndex或例如,您的數據源的pageSize。

0

您是否100%確定這是引發異常的代碼行?我很確定FindControl方法不能拋出ArithmeticException。當然,我之前知道的是錯誤的:) :)

0

我曾經在C#/。NET中看到ArithmeticException被引發到奇怪的地方,而且當時我正在使用p/invoke來處理非託管.dll與USB設備通話。

這次事故是一致的,並始終在相同的地方。當然,這個地方是完全無關的崩潰(我認爲這是一個基本的賦值,如int i = 4的或一些類似的愚蠢)

我想有一個圓滿的結局告訴你,但我從未設法完全追蹤這個問題。我堅信,原因是在非託管代碼中,並且它以某種方式損壞了內存或者甚至是自由管理的內存。 (刪除對非託管代碼的調用導致問題消失)

我發送的消息是:您是否在對非託管代碼進行任何調用?如果是這樣,我的建議是你專注於你的調試技巧:)

+0

嗨,Isak。我沒有做任何非託管代碼。我還沒有勇氣去嘗試。 :) – 2008-09-17 19:41:22

相關問題