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

 简单的解决方法: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

语句还是报同样的错误。根据

google

出来的结果,提到对象重定义会引起

这样的结果。根据这一提示,替换掉页面级全局对象,总算搞定了。

classDBOper{

/*构造函数没有函数体

**c#写的一系列对数据库操作方法

**}最初为了省事,尽量少声明对象,只在全局声明了一个

privateDBOperd

b=newDBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内

存浪费。后来代码重构,在编译的时候并未报错。但是当运行的时候,就出现"

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

结果就因它而搞了

几个小时。

后来根据

google

的结果,

将不同方法中使用到的

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

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值