system.nullreferenceexception怎么解决
2016-01-28 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
1、ViewState 对象为Null。
2、DateSet 空。
3、sql语句或Datebase的原因导致DataReader空。
4、声明字符串变量时未赋空值就应用变量。
5、未用new初始化对象。
6、Session对象为空。
7、对控件赋文本值时,值不存在。
8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。
9、使用FindControl时,控件不存在却没有做预处理。
10、重复定义造成未将对象引用设置到对象的实例错误.
我的错误是第六种,Session对象为空.
错误原因:在调用 Session["userid"].ToString() 前应先检查 Session["userid"] 对象是否为 null
在未登录的情况下, Session["userid"] 的值是null,直接用ToString()方法肯定会出错的...
我原来的代码:
protected void Page_Load(object sender, EventArgs e)
{
strIP = Request.UserHostAddress.ToString();
strUserID = Session["userid"].ToString();
strMessage = this.tbMessage.Text;
strPostID = Request["postid"].ToString();
strReplyTime = DateTime.Now.ToString();
}
改正后的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userid"] != null && Session["postid"] != null)
{
strIP = Request.UserHostAddress.ToString();
strUserID = Session["userid"].ToString();
strMessage = this.tbMessage.Text;
strPostID = Request["postid"].ToString();
strReplyTime = DateTime.Now.ToString();
}
}
有错误给你一个找到出错原因的方法:
你如果是在编写程序过程中测试这个index.aspx页面时出现上述错误,那么你可以如下解决:
用VS.NET2003或VS.NET2005(主要看这个程序工程,你原来用的是哪一个开发环境了)打开此程序工程。
如果点击运行没有错误,及编译后没有产生语法错误,那么就要找到是在哪个功能的哪条语句中出现了上述错误。可在能执行的地方设置断点,逐句运行程序看到哪条语句后不能执行而提示了错误。
如果你已经new过了对象,那么你看看你new过的对象是否已经失效,也就是看看定义的对象的作用范围是否合法。
并且可以使用右键的快速监测来查看对象。
如果你是调用了Web Services(及Web服务)那么看看你实例化的Web Services是否存在,并且你是否实例化了Web Services以及是否在程序工程中添加了Web引用,其中的不对称加密解密过程是否正确,是否执行了应该执行的程序代码。
如果你是没有源程序而只是访问了某个网站,那么我只能告诉你,这个错误提示是程序错误,编译过程只能监测语法,而不能监测语意,所以你不能解决,可以告诉你所访问的网站,让他们解决出现的此类问题。
错误代码
首先说明出错的原因是你有一个对象没有实例化,也就是没有使用关键字new一下(例如:TexBox TB1 = new TexBox(),再如:DataSet Ds1 = new DataSet()),如果你都new了,那么也有可能是你所new的对象不存在了,或者是在程序中不可用。
错误(error)是指人们在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(errorcode),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。