【问题标题】:Specified cast is not valid. error shows in window server 2008 r2指定的演员表无效。窗口服务器 2008 r2 中显示错误
【发布时间】:2014-10-24 05:49:02
【问题描述】:

我使用 linq 和 oracle 数据库在 asp.net c# 中创建了一个应用程序。这个应用程序在 Widows 7 32 位本地主机上运行良好。但是当我在 windows server 2008 r2 部署这个应用程序时。它给出了以下错误。指南我下面的错误是什么。如何在部署服务器上检查此错误以及如何解决此错误

指定的演员表无效。描述:未处理的异常 在执行当前 Web 请求期间发生。请 查看堆栈跟踪以获取有关错误和位置的更多信息 它起源于代码。

异常详细信息:System.InvalidCastException:未指定强制转换 有效。

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[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 source) +267

sis.regreport.Page_Load(Object sender, EventArgs e) +5015

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

System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔值

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 server 2008 中出现错误。syrcnt 是 int。

【问题讨论】:

  • 在行上放一个断点,并检查究竟是什么类型的对象键。当您知道这一点时,您将能够更好地确定您需要什么样的演员表。
  • 因为在deploymnet服务器中如何插入断点
  • 因为在开发服务器中只有 DLLs 文件可用。但在本地 pc 应用程序中工作正常
  • 你能描述一下这个错误发生的时间吗?我的意思是当您尝试重定向到某个页面或第一次在地址栏中尝试您的网址时?
  • 第一次。当我在地址栏中尝试 url 时

标签: c# asp.net .net oracle linq


【解决方案1】:

InvalidCastException 最可能的原因是r.Field&lt;string&gt;("MAJ") , r.Field&lt;decimal&gt;("year") 行。如果数据的实际类型与传递给Field&lt;T&gt; 的类型不匹配,Field&lt;T&gt; 扩展方法将抛出InvalidCastException

就在这里Convert.ToInt32(r["strength"]),实力可能没有得到合适的类型

老实说,我认为您的问题在于r.Field&lt;decimal&gt;("year")。我可能错了,因为关于变量syrcnt的数据类型的信息不多

因此给你例外System.InvalidCastException: Specified cast is not valid

【讨论】:

  • syrcnt 是 int 因为我使用的是 in for(int syrcnt =0;...)
  • 有没有办法检查部署服务器中的错误
猜你喜欢
  • 1970-01-01
  • 2013-05-08
  • 2012-03-22
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多