asp.net经典问题之“未将对象引用设置到对象的实例”

转载自:http://blog.csdn.net/sunqing0316/article/details/20797245


        相信几乎所有学过asp.net的朋友都遇到过这个问题:未将对象引用设置到对象的实例。这个问题在我刚开始学习这方面的知识的时候真有点让崩溃的感觉,当时都快打击死我了,不过经过了以后,反而有一种明朗的小激动,呵呵,问题是进步的阶梯,此乃真理。下面,就来看一下到底都有哪些原因会造成这个问题的出现(这里有我自己遇到的问题,也有在网上查阅的资料)

一、数据库方面 

1、ViewState 对象为Null。

2、DateSet 空。

3、sql语句或Datebase的原因导致DataReader空。

4、声明字符串变量时未赋空值就应用变量。

5、未用new初始化对象。

6、Session对象为空。

7、对控件赋文本值时,值不存在。

8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。

9、使用FindControl时,控件不存在却没有做预处理。

10、重复定义造成未将对象引用设置到对象的实例错误.

 

二、应用程序方面

 

     (1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.

  (2)控件名称与codebehind里面的没有对应 

  (3)未用new初始化对象 

  (4)在程序中所引用的控件不存在 

  解决方法: 

  (1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值

  (2)查看代码中是否存在未初始化的变量 

三、数据库连接

 

SqlConnection.Open   未将对象引用设置到对象的实例 

在使用VS2003开发 ASP.NET程序时候 有时候操作 SqlConnection对象的Open()方法时候会出现

未将对象引用设置到对象的实例。 

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

异常详细信息:System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:

。。。。 

conn.Open(); 

...... 

跟踪调试也肯定可以确定 对conn进行new 操作 但是程序经常在这个地方报错,但是有时候重启服务器或者重启IIS有能正常使用了。 怎么调试也找不到问题  那么这个时候可能是你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁 

需要打NETFRAMEEWORK1.1 SP1的补丁,到微软官方网站下载安装后就好了。 

四、一般出现NullReferenceException异常的情况:

1、对象所在的命名空间没有引用

2、对象没有实例化

3、出现异常,实例化失败对象为 null

 

五、IIS 扛不住的时候,也会出现上面的错误。

当应用程序的用户访问量超过它能承受的范围之后,就会出错。

改善你的程序,使用缓存,尽量减少与数据库交互的次数。

 

六、查看是否重置了DataSet引用

请大家好好查查自己的代码,是不是在其他地方重新引用了,在DataSet被设置成全局对象也会出现这种错误提示。

 

七、最后

甚至,仅仅因为网站里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象也会出错。

当你发现所有的方法不行时,打上.netframework的补丁

总结

        暂时就这么多了吧,虽然错误的表现形式大致相同,但是其原因却是五花八门,学习就要像中医一样,治标更要治本,学习要知其然还要知其所以然。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET应用程序中,当我们在编码过程中遇到异常时,有时会出现类似于“服务器错误。对象引用设置对象实例”的错误信息。这个错误通常是由于在代码中使用了一个初始化的对象而造成的。 这个错误的原因有很多种可能,比如在代码中使用了一个尚实例化的对象,或者尝试使用一个已经销毁的对象等。当在代码中调用一个对象的方法或属性时,如果该对象为空,就会发生这个错误。 解决这个错误的方法有很多种,首先可以检查代码中是否有设置实例对象。可以通过加上合适的条件语句来确保对象被正确地初始化。例如,在使用一个对象之前,可以先判断该对象是否为空,如果为空则先创建它或者从其他地方获取它的实例。 另外,还有一种常见的错误是在使用对象的时候忘记了给它赋值。因此,我们在使用对象之前应该先确保对象已经被正确地赋值,而不是默认为null。可以通过给对象赋上一个初始值,或者在需要使用对象之前进行一次非空判断来解决这个问题。 总的来说,ASP.NET应用程序中的“服务器错误。对象引用设置对象实例”提示是因为在代码中使用了一个初始化的对象。为了解决这个错误,我们应该检查代码中是否有设置实例对象,并确保在使用对象之前对其进行初始化或赋值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值