提问者:小点点

指定的强制转换无效。Windows server 2008 r2中显示错误


我使用linq和oracle数据库在ASP.NET C#中制作了一个应用程序。此应用程序在Widows 7 32位本地主机上运行良好。但当我在windows server 2008 R2中部署此应用程序时,它出现以下错误。请指导我以下错误是什么。如何在部署服务器上检查此错误以及如何解决此错误

指定的强制转换无效。描述:当前web请求执行过程中发生未处理的异常。请查看堆栈跟踪,以获得有关错误及其在代码中产生的位置的详细信息。

异常详细信息:System.InvalidCastException:指定得强制转换无效.

源错误:

在执行当前web请求期间生成了未处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来标识。

堆栈跟踪:

[InvalidCastException:指定的强制转换无效。]

System.Data.Unboxt`1.ValueField(对象值)+54

sis.<>C__DisplayClass55.B__0(DataRow r)+38

System.Linq.WhereEnumerableIterator`1.MoveNext()+156

System.Linq.WhereSelecteNumerableIterator`2.MoveNext()+165

System.Linq.D__81`1.MoveNext()+472

System.Linq.Enumerable.Count(IEnumerable`1源)+267

sis.regreport.page_load(对象发送方,EventArgs e)+5015

System.Web.UI.Control.LoadRecursive()+71

System.web.ui.page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean

includeStagesAfterAsyncPoint)+3178

var vcolM = dt.AsEnumerable()
           .Where(r => r.Field<string>("MAJ") == (string)vprglist 
           && r.Field<string>("SPEC") == (string)vspecourse 
           && r.Field<string>("L_ABR_CODE") == (string)genderEng[1] 
           && r.Field<string>("reg") == (string)drRegion["reg"] 
           && r.Field<decimal>("year") == syrcnt)
           .Sum(r => Convert.ToInt32(r["strength"]));

以上所有的linq在本地PC中都能正常工作,但在windows Server2008中出现错误,其中syrcnt为int。


共1个答案

匿名用户

InvalidCastException最可能的原因是R.field(“maj”)、R.field(“year”)行。如果数据的实际类型与传递给字段的类型不匹配,字段扩展方法将引发InvalidCastException

位于此处的convert.toint32(R[“strength”]),强度可能没有得到正确的类型

老实说,我认为您的问题在于行r.field(“year”)。我可能错了,因为关于变量syrcnt的数据类型信息不多

因此给出异常System.InvalidCastException:指定的强制转换无效