开发环境:VS2010,SQL Server2005,Windows7,使用LINQ to SQL作为ORM

运行环境:Windows2003(IIS6),.NET 3.5 SP1,SQL Server2000

症状:开发环境下一切正常,在运行环境中出现如下错误:

代码

指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 指定的转换无效。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[InvalidCastException: 指定的转换无效。]
   System.Data.Linq.SingleKeyManager`2.TryCreateKeyFromValues(Object[] values, V& v) +59
   System.Data.Linq.IdentityCache`2.Find(Object[] keyValues) +28
   System.Data.Linq.StandardIdentityManager.Find(MetaType type, Object[] keyValues) +23
   System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues) +48
   System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance) +142
   System.Data.Linq.ChangeProcessor.BuildEdgeMaps() +254
   System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +59
   System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +331
   System.Data.Linq.DataContext.SubmitChanges() +19
   Senparc.Web.Admin.ProductEdit.btnSubmit_Click(Object sender, EventArgs e) +847
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

分析原因:

注意到“System.Data.Linq.IdentityCache`2.Find(Object[] keyValues) +28”这一句,说明和数据库的主键很可能有关,于是排查有关主键的所有操作。最后发现,在SQL数据库中,有两个表的主键为ID(int类型),并且没有关联;而在LINQ to SQL中,这两个表进行了关联,并且关联的字段都为非主键的Guid类型。于是猜测可能是LINQ to SQL对主键的映射出现了问题。

解决方法1:在LINQ to SQL的.dbml文件中(也可以可视化操作其属性),将这两个表的主键变为Guid外连字段。问题解决。

解决方法2:使数据库和LINQ to SQL同步,修改数据库中的主键,并使用LINQ to SQL重新自动生成映射。

结论:网上搜了一下,似乎没有提到这种处理方法,反而提到了和Guid相关的很多信息,可以比较肯定的是:这是一个.NET3.5中的bug,在4.0的环境中已经解决。

关于Linq to SQL 的“异常详细信息: System.InvalidCastException: 指定的转换无效。”相关推荐

  1. 异常详细信息: System.ArgumentException: 不支持关键字: “metadata”。

    ASP.NET MVC中报的一个错误... 异常详细信息: System.ArgumentException: 不支持关键字: "metadata". 其实这个是我修改web.co ...

  2. 异常详细信息: System.Web.HttpException: 请求在此上下文中不可用

    异常详细信息: System.Web.HttpException: 请求在此上下文中不可用 参考文章: (1)异常详细信息: System.Web.HttpException: 请求在此上下文中不可用 ...

  3. linux系统获取用户信息失败怎么办,异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法...

    最近在做.NET项目,因为本人以前做Java较多,所以对.NET不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...

  4. 异常详细信息: System.Runtime.InteropServices.COMException: 无效的类别字符串

    无效的类别字符串 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Runtime.Inte ...

  5. 异常详细信息: System.Data.SqlClient.SqlException:用户 ‘IIS APPPOOL\DefaultAppPool‘ 登录失败解决办法

    异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法 参考文章: (1)异常详细信息: ...

  6. 异常详细信息: System.UnauthorizedAccessException: 对路径的访问被拒绝。

    异常详细信息: System.UnauthorizedAccessException: 对路径的访问被拒绝. 参考文章: (1)异常详细信息: System.UnauthorizedAccessExc ...

  7. 异常详细信息: System.UnauthorizedAccessException: 对路径“”的访问被拒绝。

    异常详细信息: System.UnauthorizedAccessException: 对路径""的访问被拒绝. 参考文章: (1)异常详细信息: System.Unauthori ...

  8. 异常详细信息: System.ComponentModel.Win32Exception: 拒绝访问。

    异常详细信息: System.ComponentModel.Win32Exception: 拒绝访问. 参考文章: (1)异常详细信息: System.ComponentModel.Win32Exce ...

  9. 异常详细信息: System.Web.HttpException: 未能执行 URL。如何解决。

    说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpException: 未 ...

最新文章

  1. 编程问题之:x=xamp;(x-1)
  2. AAA 服务器 — Diameter(直径)协议
  3. 【微职位公开课】老学长自述:如何成为年薪50W的技术工程师
  4. rk3288 android4.4,ubuntu16.04下firefly rk3288的编译安卓4.4
  5. 堆栈溢出回答了我们不知道的Java首要问题
  6. idea中git如何切换到master_IDEA中Git的使用
  7. HugeGraph 图数据库常见问题汇总
  8. 明晚8点,捷微团队QQ群公开课,讲解jeewx2.0版本maven环境的搭建入门!
  9. java线程三种创建方式与线程池的应用
  10. secureCRT使用退格键(backspace)出现^H解决的方法
  11. python异常处理与上下文管理器
  12. PLSQL提交带有模板的报表的方法
  13. 空间点到空间直线的距离求解
  14. 信用修复的社会意义及基本概念、要素?
  15. Kotlin关键字总结
  16. 【大厂算法系列】学数据结构与算法有用吗?时间与空间复杂度的定义与计算
  17. 快递分拣的计算机技术是那些,RFID物流分拣系统方案
  18. html转m3u8地址,[转]m3u8直播测试地址
  19. vue---组件通信
  20. Map集合,Collections(集合工具类)

热门文章

  1. Git(9)-diff
  2. 面试--Linux命令总结
  3. C++ Makefile文件详解
  4. flask 安装flask_resultful
  5. ClickHouse 客户端命令
  6. 长寿的人会有的8个健康理念
  7. 换位思考的最高境界是换待遇,所以,换位思考就是空话!!!
  8. 开发人员,请爱护你的身体
  9. 优秀的软件企业为何倒下?
  10. 视频测试序列的下载地址