当前位置: 首页 > 知识库问答 >
问题:

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

通博实
2023-03-14

我使用linq和oraclehtml" target="_blank">数据库在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个答案

葛海阳
2023-03-14

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

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

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

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

 类似资料:
  • 问题内容: 嗨,我一直在代码中看到这个指定的转换无效,但是当我连接到备份数据库时,我没有收到指定的转换无效的错误。我不确定发生了什么。 同样,此代码可在一个数据库上完美运行,而在另一个数据库上却给我错误。 我的控制器 我的模特 堆栈跟踪 问题答案: 将备份数据库与无效数据库进行比较,尤其是将ID列进行比较。确保它们同时匹配 类型 (浮点数)和可为 空 (NULL)的能力。 引发异常表示列之一(类型

  • 指针变量数据类型的强制转换 必须显式强制类型转换,不允许隐式类型转换 指向空间的强制类型转换,本质上就是普通变量的强制类型转换 int a = 10; float b = 3.14; int *pa = &a; float *pb = &b; *pa = (int)*pb; // 等价于 a = (int)b; 指针本身强制类型转换,改变的是对其指向空间的引用方式(空间大小和存储结构) int

  • 假设代码是用c11编译的,并且启用了严格别名。 我不是在寻找一种不同的方法,我想专注于这个具体的问题,以及它是否可行或为什么不可行。 (如果我无意中犯了一些无关的错误,请告诉我,我会改正的) C11标准说: 6.2.5.28所有指向结构类型的指针应具有彼此相同的表示和对齐要求。 6.7.2.1.6结构是由成员序列组成的类型,其存储按有序顺序分配 这意味着结构A和B中指针的大小和对齐方式相同。 结构

  • 我得到以上的错误,如果有人知道,然后告诉我。。。我将非常感激 Java: XML:

  • 下面是托管活动片段: 有问题的行是代码段的最后一行。这是我的语录片段。 假设我对主机活动没有扩展support.v4的看法是正确的,那么我该怎么做呢?

  • 本文向大家介绍SqlDataReader指定转换无效的解决方法,包括了SqlDataReader指定转换无效的解决方法的使用技巧和注意事项,需要的朋友参考一下 SqlDataReader指定转换无效的解决方法,具体内容如下 SqlDataReader 自带的GetInt32(以及其他的比如GerString等)方法 只是获取数据库中对应数据类型的列,并不具有类型转化的功能,所以不能这样使用 解决方