算术运算导致溢出

时间:2010-11-25 14:19:33

标签: asp.net-mvc iis-7 overflow

该应用程序在Win server 2003 / IIS 6.0环境中运行良好。 当我将代码移动到win server 2008 / IIS 7.0时,我收到以下错误?你能告诉我什么是错误原因吗?我错过了什么吗?

Server Error in '/' Application.

Arithmetic operation resulted in an overflow. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.OverflowException: Arithmetic operation resulted in an overflow.

堆栈追踪:

[OverflowException:算术运算导致溢出。]    System.IntPtr.ToInt32()+37    CoreLab.Common.a.a(代表A_0)+1935    CoreLab.Oracle.ab.a(OracleConnection A_0)+214    CoreLab.Oracle.OracleConnection.Open()+375    c:\ inetpub \ wwwroot \ mtitimeproduction \ dataaccess \ timecardda.cs中的MonsterWorldwide.iTime.DataAccess.TimecardDA.GetTimecardPageInfoSet(Int32 personId,Int32 pageNumber,Int32 rowsPerPage,Int32& rowsCountTotal):28    c:\ inetpub \ wwwroot \ mtitimeproduction \ businesslogic \ timecardbl.cs中的MonsterWorldwide.iTime.BusinessLogic.TimecardBL.GetTimecardPageInfoSet(Int32 personId,Int32 pageNumber,Int32 rowsPerPage,Int32& rowsCountTotal):24    c:\ inetpub \ wwwroot \ mtitimeproduction \ webgui \ webparts \ timecardlist.ascx.cs中的MonsterWorldwide.iTime.WebGUI.WebParts.TimecardList.LoadData():112    MonsterWorldwide.iTime.WebGUI.WebParts.TimecardList.Page_Load(Object sender,EventArgs e)位于c:\ inetpub \ wwwroot \ mtitimeproduction \ webgui \ webparts \ timecardlist.ascx.cs:52    System.Web.UI.Control.OnLoad(EventArgs e)+132    System.Web.UI.Control.LoadRecursive()+66    System.Web.UI.Control.LoadRecursive()+191    System.Web.UI.Control.LoadRecursive()+191    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+2428


版本信息:Microsoft .NET Framework版本:2.0.50727.4952; ASP.NET版本:2.0.50727.4927

1 个答案:

答案 0 :(得分:1)

[OverflowException: Arithmetic operation resulted in an overflow.] 
System.IntPtr.ToInt32() +37 
CoreLab.Common.a.a(Delegate A_0) +1935 
CoreLab.Oracle.ab.a(OracleConnection A_0) +214

这看起来像是一些写得不好的非托管互操作代码,它没有考虑CPU类型,并且在x64位操作系统中运行时会出现问题。在64位操作系统中,指针是与32位操作系统相反的64位整数。

也许你应该查看你正在使用的这个CoreLab.Common组件的文档是否支持64位系统。

引用IntPtr.ToInt32方法的文档:

  

OverflowException:在64位平台上,此实例的值太大或太小,无法表示为32位有符号整数。