NullReferenceException: 未将对象引用设置到对象的实例 到底怎么解决?
程序出现“NullReferenceException: 未将对象引用设置到对象的实例”的错误,查了网上好多出此问题的帖子,但是都没有说明白到底是怎么产生怎么彻底解决。我的情况是这样的:
1、该程序在一些机器上运行正常,但是在另外一些机器上就出现此问题。
2、每个机器上都装了IIS、framwork框架和iewebcontrols。
3、网上有的说是有对象返回值为空造成的,还有的说是IIS和framework框架安装顺序反了,还有的说重新安装了一边.net就好了。真不知道到底是怎么回事。
4、程序有时候自己机器编译时候能运行,但是打包到别的机器上安装就不能用,为什么有些能用有些不能用让我真的很是苦恼。
希望大家都来帮帮忙,集思广益,毕竟网上还没有准确的能够解决此问题的办法。
出错页面:
“/jindian”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
LoadLibraryW(UInt16* ) +0
System.EnterpriseServices.Thunk.Security.Init() +76
System.EnterpriseServices.Thunk.Security.SuspendImpersonation() +81
System.EnterpriseServices.Platform.Initialize() +503
System.EnterpriseServices.ResourcePool..ctor(TransactionEndDelegate cb) +11
System.Data.SqlClient.ConnectionPool..ctor(DefaultPoolControl ctrl) +797
System.Data.SqlClient.PoolManager.FindOrCreatePool(DefaultPoolControl ctrl) +170
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +358
System.Data.SqlClient.SqlConnection.Open() +384
jindian.WebForm1.ImageButton1_Click(Object sender, ImageClickEventArgs e) +153
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
相关部分代码:
SqlConnection myconn=new SqlConnection(ConfigurationSettings.AppSettings["myconnection"]);
……
private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
string mystr="select * from 操作员表 where 姓名='"+name.Text.ToString().Trim()+"'";
SqlCommand myconnection=new SqlCommand(mystr,myconn);
myconn.Open();
SqlDataReader myreader=myconnection.ExecuteReader();
if (myreader.HasRows)
{//验证用户名和密码是否符合
string mystr2="select * from 操作员表 where 姓名='"+name.Text.ToString().Trim()+"' and 密码='"+password.Text.ToString().Trim()+"'";
SqlCommand mycon=new SqlCommand(mystr2,myconn);
myreader.Close();
SqlDataReader myread=mycon.ExecuteReader();
if (myread.HasRows)
{
while (myread.Read())
{//调用用户角色
string roles=myread.GetValue(3).ToString();
string dian=myread.GetValue(7).ToString();
Session["storename"]=dian.ToString().Trim();
Session["salesman"]=myread.GetValue(0).ToString();
Session["yonghu"]=name.Text.ToString().Trim();
……
webconfig
<add key="myconnection" value="Server=192.168.0.20;uid=sa;pwd='dx321';database=store"/> --------------------编程问答-------------------- string roles=myread.GetValue(3).ToString();
string dian=myread.GetValue(7).ToString();
Session["salesman"]=myread.GetValue(0).ToString();
上面三句有DBNULL的可能修改为:
string roles = Convert.ToString(myread.GetValue(3));
string dian = Convert.ToString(myread.GetValue(7));
Session["salesman"] = Convert.ToString(myread.GetValue(0)); --------------------编程问答-------------------- 上面的改了 还是不行啊
正在准备资源...
正在更新引用...
未能找到依赖项“Interop.ADODB”。
未能找到依赖项“Interop.ADODB”。
未能找到依赖项“Interop.ADODB”。
未能找到依赖项“Interop.ADODB”。
难道是缺少依赖项“Interop.ADODB”造成的?
现在ADODB引用显示错误 但是我不知道怎么加 也不知道依赖项“Interop.ADODB”怎么添加 --------------------编程问答-------------------- 那是COM组件,在COM选项卡里引用。。。
你用ADO.NET就可以了,为什么会用到ADODB? --------------------编程问答-------------------- Interop.ADODB是一个com组件,在引用里面添加以下 --------------------编程问答-------------------- 又是拼接字符串..
就不能用参数? --------------------编程问答--------------------
补充:.NET技术 , .NET Framework