指定的强制转换无效.错误显示在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。

指定的强制转换无效.错误显示在windows服务器2008 r2中

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