奇怪的问题!高分求救:未将对象引用设置到对象的实例

jhsfg 2004-09-16 10:31:43
这是一个用于判断用户是否在线的程序:我在本地上运行正常!把他放到服务器上就出现以下错误。(而且是有时运行正常的),运行了一段时间就出现以下错误:


[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;
}


}


}
...全文
217 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocktan 2005-01-26
  • 打赏
  • 举报
回复
我也碰到同样问题,而且有的机器访问可以,有的机器访问部行,在本机和服务器上LOCALHOST运行都可以,远程就访问就报错。。关注。。。
八爪鱼-杭州 2004-09-17
  • 打赏
  • 举报
回复
更新bin目录的内容会引起asp.net程序重启的,重启以后_alluser就是null了,你应该在nLineUser类增加一个静态构造函数,在里面初始化好_alluser.或者在Gloab的Application_Start里.
jhsfg 2004-09-17
  • 打赏
  • 举报
回复

 有时候我更新服务器上的编译文件(dll)文件后.又出错了
jhsfg 2004-09-17
  • 打赏
  • 举报
回复
还是时不时的出错!我在所有引用的地方都做了判断的
急死了!
jhsfg 2004-09-17
  • 打赏
  • 举报
回复
顶顶
jhsfg 2004-09-17
  • 打赏
  • 举报
回复
上面的方法都试了还是会出错!同样的程序在本地上运行从没出过错.为什么放到服务器就会出错!
急死了!
急死了!


itfly 2004-09-17
  • 打赏
  • 举报
回复
给他一个初始植!
nuame==null?"":name
这样的方式可以避免的。
zhangjidong 2004-09-17
  • 打赏
  • 举报
回复
up
gbbword 2004-09-17
  • 打赏
  • 举报
回复
顶上!
八爪鱼-杭州 2004-09-16
  • 打赏
  • 举报
回复
curUser = _alluser.Select(strExpr);
if (curUser.Length >0 )
---------------------
上面两句是有问题的,因为DataTable.Select()是会返回null的,当返回curUser==null的时候,去引用他的属性Length肯定抛异常的,这里你应该判断一下curUser是不是null.

另外,不知道你是不是在别的地方初始化了_alluser。如果没有的话,你在
curUser = _alluser.Select(strExpr);之前应该判断_alluser是不是null.
spgoal 2004-09-16
  • 打赏
  • 举报
回复
可能是 _alluser没有实例化吧
jhsfg 2004-09-16
  • 打赏
  • 举报
回复
litcat(里子) :
还是有时侯会出错
jhsfg 2004-09-16
  • 打赏
  • 举报
回复
奇怪!在本地上运行好好的
woooooooow 2004-09-16
  • 打赏
  • 举报
回复
试着把这一行拆开来分别判断:
if(name!=null&&name.CompareTo("")!=0&&name!=""&&_alluser!=null)

我也常碰到类似问题
jhsfg 2004-09-16
  • 打赏
  • 举报
回复
IsUserOnLine(String name)
用与判断的这一句
thinkingforever 2004-09-16
  • 打赏
  • 举报
回复
是哪一句出错的?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧