未将对象引用设置到对象的实例–可能出现的问题总结

未将对象引用设置到对象的实例–可能出现的问题总结

一、网络上的一般说法

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 操作 可是程序常常在这个地方报错,可是有时候重新启动server或者重新启动IIS有能正常使用了。 怎么调试也找不到问题  那么这个时候可能是 你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁 
须要打NET FRAMEEWORK1.1 SP1的补丁,到微软官方站点下载安装后就好了。

 

 

四、

一般出现NullReferenceException异常的我个人总结有下面情况:
1、对象所在的命名空间没有引用
2、对象没有实例化
3、出现异常,实例化失败对象为 null

 

 

五、

IIS 扛不住的时候,也会出现上面的错误。
当应用程序的用户訪问量超过它能承受的范围之后,就会出错。
改善你的程序,使用缓存,尽量降低与数据库交互的次数。

 

 

六、

我碰到的问题是,无意重置了DataSet引用,后出现这个问题,请大家好好查查自己的代码,是不是在其它地方又一次引用了,在我的程序中DataSet被设置成全局对象。

 

 

七、

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

 

 

八、

我出现这个错误,只由于站点里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象
但也浪费了一下午的时间在调代码上

 

 

九、

为每一个可疑的地方加入�监视,起初以为是sql语句写错了,查了几遍,换用sql语句还是报相同的错误。依据google出来的结果,提到对象重定义会引起这种结果。依据这一提示,替换掉页面级全局对象,总算搞定了。
       class DBOper{
            /*构造函数没有函数体
             *
             *c#写的 一系列对数据库操作方法
             *
             *
       }
       最初为了省事,尽量少声明对象,仅仅在全局声明了一个private DBOper db=new DBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内存浪费。后来代码重构,在编译的时候并未报错。可是当执行的时候,就出现” NullReferenceException: 未将对象引用设置到对象的实例“。结果就因它而搞了几个小时。后来依据google的结果,将不同方法中使用到的DBOper对象一一重定义为局部变量(一个方法里面仅仅定义一个DBOper对象,多次调用其方法均正常),去掉全局的private变量。再执行的时候就正常了。
       至于为什么将自己定义的对象提成为class为private在不同的方法里面使用后而出现这种问题,如今还不是非常清楚…………………….

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119020.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 圆圈正义读后感_为了公平正义观后感800

    圆圈正义读后感_为了公平正义观后感800圆圈正义半书观后感​ 这段时间读了一本书,名字叫《圆圈正义》,这本书的作者是罗翔,可能大家在抖音上经常刷到过,人称法外狂徒张三,经常会用很有趣的语言来讲述法律知识。​ 我认识他是因为他说过一段话:“我们登上我们并非我们所选择的舞台,演出并非我们所选择的剧本,我们这一生中自己能够决定的东西很少,我们可能能决定5%的东西,但95%的东西是我们决定不了的,我们决定不了我们的出生,我们决定不了我们的智商,我们更决定不了我们这一生的贵人相助,很多时候我们经常会羡慕别人,但是没有谁的剧本值得羡慕,你只能把你自己

    2025年8月21日
    3
  • 深入Java事务的原理与应用

    一、什么是JAVA事务通常的观念认为,事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(iso

    2021年12月26日
    43
  • linux mail发邮件_python邮件发送

    linux mail发邮件_python邮件发送linux安装mailx发邮件文章目录linux安装mailx发邮件原理安装配置qq的smtps服务器配置Peer的证书发布者为信任​ mail命令是Linux终端发送邮件用的最多的命令。mailx是mail命令的更新版本,基于BerkeleyMail8.1,意在提供POSIXmailx命令的功能,并支持MIME、IMAP、POP3、SMTP和S/MIME扩展。mailx在某些交互特性上更加强大,如缓冲邮件消息、垃圾邮件评分和过滤等。在Linux发行版上,mail

    2022年10月20日
    2
  • Vue生成二维码_后端生成二维码还是前端

    Vue生成二维码_后端生成二维码还是前端vue生成二维码分享功能生成二维码听起来很难,其实也很简单先看一下效果:效果就是这个样子首先给要分享的dom一个点击触发事件<!–分享–><divclass=”rightimg”@click=”share”><imgsrc=”../assets/img/share.png”/></div>然后在vant-ui框架里找到合适组件(遮罩层)直接复制过去就可以,不要的东西删掉

    2022年9月28日
    2
  • 用testNG测试,可以做简单的并发测试

    用testNG测试,可以做简单的并发测试

    2021年5月12日
    104
  • 黑客养成手册「建议收藏」

    黑客养成手册「建议收藏」目录入侵他人电脑盗号攻击电脑控制别人计算机黑屏入侵他人电脑你是不是想学习到一些关于盗号、攻击别人计算机…的方法?其实这些方法很简单!现在就有个机会来了!我为大家讲解!首先申明这类技术可不要乱对别人使用啊!出事本人概不负责!下面就让我们来学习这些技术麻!盗号首先,我先给大家讲讲如何盗号:方法有两种在输入账号密码的时候,一个一个密码的猜,直到能登陆为止。然后记下来,那就是密码了!这…

    2022年9月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号