我使用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。
InvalidCastException
最可能的原因是R.field
行。如果数据的实际类型与传递给字段
的类型不匹配,字段
扩展方法将引发InvalidCastException
。
或
位于此处的convert.toint32(R[“strength”])
,强度可能没有得到正确的类型
老实说,我认为您的问题在于行r.field
。我可能错了,因为关于变量syrcnt
的数据类型信息不多
因此给出异常System.InvalidCastException:指定的强制转换无效