指定的强制转换无效.错误显示在windows服务器2008 r2中
本文关键字:windows 服务器 2008 r2 显示 错误 无效 转换 | 更新日期: 2023-09-27 18:20:12
我使用linq和oracle数据库在asp.net c#中制作了一个应用程序。此应用程序在Widows 7 32位本地主机上运行良好。但是当我在windows服务器2008 r2中部署这个应用程序时,它给出了以下错误。请告诉我以下错误是什么。如何在部署服务器上检查此错误以及如何解决此错误
指定的强制转换无效。描述:未处理的异常在执行当前web请求期间发生。请查看堆栈跟踪以获取有关错误和位置的更多信息它起源于代码。
异常详细信息:System.InvalidCastException:指定的强制转换不是有效的
来源错误:
在执行期间生成了未处理的异常当前web请求。关于可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[InvalidCastException:指定的强制转换无效。]
System.Data.UnboxT`1.ValueField(对象值)+54
sis<>c_DisplayClass55.b_0(数据行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.rereport.Page_Load(对象发送器,EventArgs e)+5015
System.Web.UI.Control.LoadRecursive()+71
System.Web.UI.Page.ProcessRequestMain(布尔值includeStagesBeforeSyncPoint,布尔
包括阶段AfterSyncPoint)+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 server 2008中出现错误。其中syrcnt是int。
InvalidCastException
最可能的原因是r.Field<string>("MAJ") , r.Field<decimal>("year")
行。如果数据的实际类型与传递给Field<T>
的类型不匹配,Field<T>
扩展方法将抛出InvalidCastException
。
或
位于这里的Convert.ToInt32(r["strength"])
,强度可能没有得到合适的类型
老实说,我认为你的问题在于r.Field<decimal>("year")
。我可能错了,因为没有太多关于变量syrcnt
的数据类型的信息
因此,给您一个异常System.InvalidCastException: Specified cast is not valid