这是一个用于判断用户是否在线的程序:我在本地上运行正常!把他放到服务器上就出现以下错误。(而且是有时运行正常的),运行了一段时间就出现以下错误:
[NullReferenceException: 未将对象引用设置到对象的实例。]
   System.Data.Select.FindClosestCandidateIndex() +196
   System.Data.Select.SelectRows() +180
   System.Data.DataTable.Select(String filterExpression) +45
   SohoProject.OnLineUser.IsUserOnLine(String name)
   SohoProject.PageBase.UserOnLine(String userid)
   _ASP.BusinessInfoId_aspx.__DataBind__control4(Object sender, EventArgs e) +277
   System.Web.UI.Control.OnDataBinding(EventArgs e) +66
   System.Web.UI.Control.DataBind() +26
   System.Web.UI.Control.DataBind() +86
   System.Web.UI.WebControls.DataList.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +127
   System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +683
   System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +48
   System.Web.UI.WebControls.BaseDataList.DataBind() +23
   System.Web.UI.Control.DataBind() +86
   System.Web.UI.Control.DataBind() +86
   SohoProject.BusinessInfoId.loadDailyPicks(Int32 zkid)
   SohoProject.BusinessInfoId.Page_Load(Object sender, EventArgs e)
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731
程序代码是:using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections ;
using System.Threading ;
using System.Web;
using System.Diagnostics;namespace SohoProject
{

public class OnLineUser:System.Web.UI.Page
{
private static DataTable _alluser;
  
public DataTable alluser
{
get{return _alluser;}
}
   public  Boolean IsUserOnLine(string name)
{
if(name!=null&&name.CompareTo("")!=0&&name!=""&&_alluser!=null)
{
string strExpr;
strExpr = "name ='" + name + "'"; 
DataRow[] curUser;

// Use the Select method to find all rows matching the filter.

curUser = _alluser.Select(strExpr);

if (curUser.Length >0 )
{
return true;    
}
else
{
return false;
}
}
else
{
return false;
}


}
        

}

解决方案 »

  1.   

    IsUserOnLine(String name)
    用与判断的这一句
      

  2.   

    试着把这一行拆开来分别判断:
    if(name!=null&&name.CompareTo("")!=0&&name!=""&&_alluser!=null)我也常碰到类似问题
      

  3.   

    litcat(里子) :
    还是有时侯会出错
      

  4.   

    可能是 _alluser没有实例化吧
      

  5.   

    curUser = _alluser.Select(strExpr);
    if (curUser.Length >0 )
    ---------------------
    上面两句是有问题的,因为DataTable.Select()是会返回null的,当返回curUser==null的时候,去引用他的属性Length肯定抛异常的,这里你应该判断一下curUser是不是null.另外,不知道你是不是在别的地方初始化了_alluser。如果没有的话,你在
    curUser = _alluser.Select(strExpr);之前应该判断_alluser是不是null.
      

  6.   


     有时候我更新服务器上的编译文件(dll)文件后.又出错了
      

  7.   

    更新bin目录的内容会引起asp.net程序重启的,重启以后_alluser就是null了,你应该在nLineUser类增加一个静态构造函数,在里面初始化好_alluser.或者在Gloab的Application_Start里.
      

  8.   

    给他一个初始植!
    nuame==null?"":name
    这样的方式可以避免的。
      

  9.   

    我也碰到同样问题,而且有的机器访问可以,有的机器访问部行,在本机和服务器上LOCALHOST运行都可以,远程就访问就报错。。关注