ASP.NET学习社区

首页 » ASP.NET学习区 » 有问有答 » 为什么老是出现“未将对象引用设置到对象的实例”
ksni56z - 2008-7-24 15:35:00
未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:

行 132:                        行 133:                        HttpPostedFile hpf=F.PostedFile;行 134:                        int cl=hpf.FileName.Length;行 135:                        行 136:                        if(cl>0)

源文件: c:\inetpub\wwwroot\bbs\reg.aspx.cs    行: 134

堆栈跟踪:

先前是好的 不过过一会在运行他就出现问题了


suresy - 2008-7-24 16:05:00
检查一下运行时有无正确上传文件,一般在保存之前最好先检查一下FileUpload控件的HasFile属性
ksni56z - 2008-7-24 17:28:00
FileUpload控件的HasFile属性 这个是在哪里啊 我用的是html组件下的file field控件 将它转化为服务器运行用的  没看到你刚才说的属性啊 在上传的时候 我首先检查了有无值 没有就将它否掉了啊
suresy - 2008-7-24 20:35:00
这个控件我比较少用,但根据我使用FileUpload控件的经验,有可能是当没有上传文件或上传出错时F.PostedFile或F.PostedFile.FileName为null,所以导致了hpf.FileName.Length空对象引用。

根据你的源代码,可以把是否为空的判断提到前面:
if (F.PostedFile == null) //或者检查F.PostedFile.FileName
{
        //出错处理
}
else
{
        HttpPostedFile hpf=F.PostedFile;
        //后面可以直接使用hpf.FileName
}

其实你完全可以在页面中使用RequireFieldValidator检查是否为空或RegularValidator检查文件类型是否合法,这样后台代码就可以少做很多事情,而且也避免了不必要的回发和等待时间。
ksni56z - 2008-7-25 0:02:00
喔 谢谢了 他有时候又好了 可能是跟环境也有关
1
查看完整版本: 为什么老是出现“未将对象引用设置到对象的实例”