14.C#/.NET编程中的常见异常(持续更新)
1.Object reference not set to an instance of an object.
未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种东西。
2.An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
一个实体对象不能由多个IEntityChangeTracker实例引用。首先参见MSDN中对于Entity Framework中的增删改的说明,特别是修改对象那里。我们看到说明文档里有这样一句话“对象服务使用IEntityChangeTracker的实例来跟踪对附加到ObjectContext的对象的更改”,1)Tracker是用来跟踪某个对象属性更改的,2)被跟踪的是附加到某个上下文的对象,3)错误信息是说一个对象不能被多个Tracker跟踪,即一个附到特定的Context中的对象有一个Tracker。
然后我觉着帮我解决这个问题的博客,说的不是太清楚,也可能是我理解能力比较差,试着自己分析一下。对应到原帖,An Entity指的肯定是user,为什么它会有多个IEntityChangeTracker的实例,明显是因为他被附到两个Context中,RoleManager.GetRoleById()方法和UserManager.Add()方法的上下文也就是Entities不一样。
通俗来讲,对于同一个实体对象(数据库关联)的操作,请在同一个上下文中完成。
3.Collection was modified; enumeration operation may not execute.
对于一个集合进行foreach遍历,如果foreach中对集合有添加和移除操作,就会报这个错。
这是IEnumerator自身的特性决定,参见备注部分:
--------------------------------大家晚上好--------------------------------
只要集合保持不变,枚举数就保持有效。如果对集合进行了更改(如添加、修改或删除元素),则枚举数将失效且不可恢复,并且下一次对 MoveNext 或 Reset 的调用将引发 InvalidOperationException。如果在 MoveNext 和 Current之间修改集合,那么即使枚举数已经无效,Current 也将返回它所设置成的元素。
枚举数没有对集合的独占访问权;因此,枚举通过集合在本质上不是一个线程安全的过程。即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。
--------------------------------大家晚上好--------------------------------
只需要把foreach改为for来遍历就好了。有几个画图的错我忘了。。。今天先写这么多好了
4.Unrecognized attribute 'targetFramework'.
这个错误发生在网站发布过程中,即分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
问题在今天(2014-11-25)上线的时候发生的,原因是IIS应用程序池的.NET CLR version配置错误。
(PS:超链接中对于上线过程中出现的一些未知概念有相应解释,诸如w3wp.exe等。)
通常一个网站对应一个与网站同名的应用程序池,IIS的应用程序池.NET CLR版本应当与开发使用的.NET CLR版本一致。
本机上一般是2.0版本,开发时使用的版本通常较高,从而导致不匹配。参考
5.Object moved to here
使用Response.Redirect()方法时,如果传入的是null或者“”,在页面上就会显示Object moved to here。
这是因为服务器返回给浏览器一个302指令要求重新跳转,但是并没有发给其要跳转的url,浏览器不知道要跳转到哪里。参考
最新文章
- 给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js
- Google 地图 API V3 之控件
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:
- background和background-size
- V-rep学习笔记:曲柄摇杆机构
- 项目中重新引用WCF报错
- POJ:最长上升子序列
- 求解:远程方法调用失败Exception from HRESULT: 0x800706BE)
- 我的CSS 入门1
- 半导体知识讲解:IC基础知识及制造工艺流程
- 前向分步算法 &;&; AdaBoost算法 &;&; 提升树(GBDT)算法 &;&; XGBoost算法
- .net webService保存全局变量中
- 命令生成所有数据库表模型以及 CRUD
- Tree命令使用
- 启动线程用start方法
- Linux系列教程(七)——Linux常用命令之帮助和用户管理命令
- Python2.7-getpass
- FreeSWITCH取消Digest校验流程
- [转]VS“当前上下文中不存在名称“ViewBag”解决方法
- Log4j简单配置解析
热门文章
- 算法训练 数字三角形(DP)
- 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂
- 《图解HTTP》阅读笔记--第十一章针对web的攻击技术
- 树状数组 二维偏序【洛谷P3431】 [POI2005]AUT-The Bus
- luogu3312 [SDOI2014]数表 (莫比乌斯反演+树状数组)
- Eclipse 创建Maven 项目
- Android studio 混淆打包
- 利用zookeeper生成唯一id,通用性代码
- Til the Cows Come Home (dijkstra算法)
- B. Sereja and Suffixes