简单的解决方法:Dim FrmSs1 As New FrmSs
未将对象引用设置到对象的实例
解决办法
未将对象引用设置到对象的实例
一、网络上的一般说法
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
对象的
Op
en()方法时候会出现
未将对象引用设置到对象的实例。
说明:执行当前
Web
请求期间,出现未处理的异常。请检查堆栈跟踪信息,
以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.NullReferenceException:未将对象引用设置到对象
的实例。
源错误:
。。。。
conn.Open();
......
跟踪调试也肯定可以确定对
conn
进行
new
操作但是程序经常在这个地方报
错,
但是有时候重启服务器或者重启
IIS
有能正常使用了。
怎么调试也找不到问
题那么这个时候可能是你本机上安装的.NETFRAMEEWORK
框架有问题,可能没有
没有安装
SP1.1
补丁
需要打
NETFRAMEEWORK1.1SP1
的补丁,到微软官方网站下载安装后就好了。
四、
一般出现
NullReferenceException
异常的我个人总结有以下情况:
1、对象所在的命名空间没有引用
2、对象没有实例化
3、出现异常,实例化失败对象为
null
五、
IIS
扛不住的时候,也会出现上面的错误。
当应用程序的用户访问量超过它能承受的范围之后,就会出错。
改善你的程序,使用缓存,尽量减少与数据库交互的次数。
六、
我碰到的问题是,
无意重置了
DataSet
引用,
后出现这个问题,
请大家好好
查查自己的代码,
是不是在
其他
地方重新引用了,
在我的程序中
DataSet
被设置
成全局对象。
七、
当你发现所有的方法不行时,打上.netframework
的补丁
八、
我出现这个错误,
仅仅因为网站里面
DAL
的
dll
文件失效,
业务层实例化不
了
IDAL
里面的对象
但也浪费了一下午的时间在调代码上
九、
为每个可疑的地方添加监视,
起初以为是
sql
语句写错了,
查了几遍,
换用
sql
语句还是报同样的错误。根据
出来的结果,提到对象重定义会引起
这样的结果。根据这一提示,替换掉页面级全局对象,总算搞定了。
classDBOper{
/*构造函数没有函数体
**c#写的一系列对数据库操作方法
**}最初为了省事,尽量少声明对象,只在全局声明了一个
privateDBOperd
b=newDBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内
存浪费。后来代码重构,在编译的时候并未报错。但是当运行的时候,就出现"
NullReferenceException:未将对象引用设置到对象的实例"。
结果就因它而搞了
几个小时。
后来根据
的结果,
将不同方法中使用到的
DBOper
对象一一重
定义为局部变量(一个方法里面只定义一个
DBOper
对象,多次调用其方法均正
常),去掉全局的
private
变量。再运行的时候就正常了。
至于为
什么
将自定义的对象提成为
class
为
private
在不同的方法里面使用
后而出现这样的问题,现在还不是很清楚
解决办法
出现“未将对象引用设置到对象的实例”
错误,一般是下面的原因:
1、ViewState
对象为
Null。
2、DateSet
为空。
3、sql
语句或
Datebase
的原因导致
DataReader
空。
4、声明字符串变量时未赋空值就应用变量。
5、未用
new
初始化对象。
6、Session
对象为空。
7、对控件赋文本值时,值不存在
8、使用
Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初
始值
9、使用
FindControl
时,控件不存在却没有做预处理
10、重复定义造成未将对象引用设置到对象的实例错误
很多时候在运行程序时,
会出现
“未将对象引用设置到对象的实例”
这样的提示
信息,主要是在代码中重复定义了造成的,只要将其中一个删除就可以了。
第一种:重复定义造成未将对象引用设置到对象的实例错误
一般在
C#中造成“未将对象引用设置到对象的实例”错误都是控件名称与
code
behind
里面的没有对应,对于初学编程的人,而在编码中重复定义也会造成这
种问题的产生。
以下是一个例子:
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
namespace
weste
{
public
class
study
:
System.Web.UI.Page
{
public
string[]
c;
private
void
Page_Load(object
sender,
System.EventArgs
e)
{
aaa();
bbb();
}
private
void
aaa()
{
string[]
c=new
string[3];
//c=new
string[3];
c[0]="我们";
c[1]="西部";
c[2]="学习";
}
private
void
bbb()
{
Response.Write(c[0]+c[1]+c[2]);
}
#region
Web
窗体设计器生成的代码
override
protected
void
OnInit(EventArgs
e)
{
InitializeComponent();
base.OnInit(e);
}
private
void
InitializeComponent()
{
this.Load
+=
new
System.EventHandler(this.Page_Load);
}
#endregion
}
}