昨天还好好的 今天早上登入页面时提示错误如下 我也看不出到是哪里的问题 还请各位高手帮忙解决谢谢
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 101: }
行 102: if(con.State == System.Data.ConnectionState.Closed)
行 103: con.Open();
行 104:
行 105: }
源文件: d:\inetpub\wwwroot\uds\components\database.cs 行: 103 堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
LoadLibraryW(UInt16* ) +0
System.EnterpriseServices.Thunk.Security.Init() +76
System.EnterpriseServices.Thunk.Security.SuspendImpersonation() +81
System.EnterpriseServices.Platform.Initialize() +497
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
UDS.Components.Database.Open() in d:\inetpub\wwwroot\uds\components\database.cs:103
UDS.Components.Database.CreateCommand(String procName, SqlParameter[] prams) in d:\inetpub\wwwroot\uds\components\database.cs:73
UDS.Components.Database.RunProc(String procName, SqlParameter[] prams) in d:\inetpub\wwwroot\uds\components\database.cs:36
UDS.Components.Staff.Login(String userName, String password) in D:\Inetpub\wwwroot\UDS\Components\Staff.cs:34
UDS.SubModule.Login.index.btnSubmit_Click(Object sender, EventArgs e) in D:\Inetpub\wwwroot\UDS\SubModule\Login\Index.aspx.cs:167
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
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
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 101: }
行 102: if(con.State == System.Data.ConnectionState.Closed)
行 103: con.Open();
行 104:
行 105: }
源文件: d:\inetpub\wwwroot\uds\components\database.cs 行: 103 堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
LoadLibraryW(UInt16* ) +0
System.EnterpriseServices.Thunk.Security.Init() +76
System.EnterpriseServices.Thunk.Security.SuspendImpersonation() +81
System.EnterpriseServices.Platform.Initialize() +497
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
UDS.Components.Database.Open() in d:\inetpub\wwwroot\uds\components\database.cs:103
UDS.Components.Database.CreateCommand(String procName, SqlParameter[] prams) in d:\inetpub\wwwroot\uds\components\database.cs:73
UDS.Components.Database.RunProc(String procName, SqlParameter[] prams) in d:\inetpub\wwwroot\uds\components\database.cs:36
UDS.Components.Staff.Login(String userName, String password) in D:\Inetpub\wwwroot\UDS\Components\Staff.cs:34
UDS.SubModule.Login.index.btnSubmit_Click(Object sender, EventArgs e) in D:\Inetpub\wwwroot\UDS\SubModule\Login\Index.aspx.cs:167
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
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
con是不是空
检查系统日志
Aspnet_regiis -i重新安装
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace UDS.Components {
/// <summary>
/// 通用的数据库处理类,通过ado.net与数据库连接
/// </summary>
public class Database : IDisposable {
// 连接数据源
private SqlConnection con;
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <returns>返回存储过程返回值</returns>
public int RunProc(string procName) {
SqlCommand cmd = CreateCommand(procName, null);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回存储过程返回值</returns>
public int RunProc(string procName, SqlParameter[] prams) {
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="dataReader">返回存储过程返回值</param>
public void RunProc(string procName, out SqlDataReader dataReader) {
SqlCommand cmd = CreateCommand(procName, null);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
//return (int)cmd.Parameters["ReturnValue"].Value;
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <param name="dataReader">存储过程所需参数</param>
public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) {
SqlCommand cmd = CreateCommand(procName, prams);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
//return (int)cmd.Parameters["ReturnValue"].Value;
}
/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams) {
// 确认打开连接
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
if (prams != null) {
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null)); return cmd;
} /// <summary>
/// 打开数据库连接.
/// </summary>
private void Open() {
// 打开数据库连接
if (con == null) {
con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
}
if(con.State ==System.Data.ConnectionState.Closed)
con.Open(); } /// <summary>
/// 关闭数据库连接
/// </summary>
public void Close() {
if (con != null)
con.Close();
} /// <summary>
/// 释放资源
/// </summary>
public void Dispose() {
// 确认连接是否已经关闭
if (con != null) {
con.Dispose();
con = null;
}
} /// <summary>
/// 传入输入参数
/// </summary>
/// <param name="ParamName">存储过程名称</param>
/// <param name="DbType">参数类型</param></param>
/// <param name="Size">参数大小</param>
/// <param name="Value">参数值</param>
/// <returns>新的 parameter 对象</returns>
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) {
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
} /// <summary>
/// 传入返回值参数
/// </summary>
/// <param name="ParamName">存储过程名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <returns>新的 parameter 对象</returns>
public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) {
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
} /// <summary>
/// 传入返回值参数
/// </summary>
/// <param name="ParamName">存储过程名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <returns>新的 parameter 对象</returns>
public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
}
/// <summary>
/// 生成存储过程参数
/// </summary>
/// <param name="ParamName">存储过程名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <param name="Direction">参数方向</param>
/// <param name="Value">参数值</param>
/// <returns>新的 parameter 对象</returns>
public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) {
SqlParameter param; if(Size > 0)
param = new SqlParameter(ParamName, DbType, Size);
else
param = new SqlParameter(ParamName, DbType); param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value; return param;
}
}
}
————————————————————————————————————
红色就是现在报错的地方提示 未将对象引用设置到对象的实例。
在报错的上面一句是判断如果con为空,则从配置文件里读出数据库连接,估计是这里有问题,估计是iis还是什么的原因没有读出内容来,con仍为null,造成下面判断它的State 时报错!!!
——————————————————————————————
- con {System.Data.SqlClient.SqlConnection} System.Data.SqlClient.SqlConnection
+ System.ComponentModel.Component {System.Data.SqlClient.SqlConnection} System.ComponentModel.Component
+ _constr {System.Data.SqlClient.SqlConnectionString} System.Data.SqlClient.SqlConnectionString
_fIsClosing false bool
_hidePasswordPwd false bool
_infoMessageEventHandler <未定义的值> System.Data.SqlClient.SqlInfoMessageEventHandler
_internalConnection <未定义的值> System.Data.SqlClient.SqlInternalConnection
_localTransaction <未定义的值> System.WeakReference
_objectState Closed System.Data.ConnectionState
_preparedCommands <未定义的值> System.Collections.ArrayList
_reader <未定义的值> System.WeakReference
_sdc <未定义的值> System.Data.SqlClient.SqlDebugContext
_SqlClientPermission <未定义的值> System.Data.SqlClient.SqlClientPermission
_stateChangeEventHandler <未定义的值> System.Data.StateChangeEventHandler
ConnectionString "server=(local);database=UDS;User Id=sa;pwd=sa;" string
ConnectionTimeout 15 int
Database "UDS" string
DataSource "(local)" string
IsClosing false bool
IsShiloh <错误: 发生 {System.NullReferenceException} 类型的异常> bool
LocalTransaction <未定义的值> System.Data.SqlClient.SqlTransaction
PacketSize 8192 int
Parser <未定义的值> System.Data.SqlClient.TdsParser
Reader <未定义的值> System.Data.SqlClient.SqlDataReader
ServerVersion <错误: 发生 {System.InvalidOperationException} 类型的异常> string
+ SqlClientPermission {System.Data.SqlClient.SqlClientPermission} System.Data.SqlClient.SqlClientPermission
State Closed System.Data.ConnectionState
WorkstationId "GPC045" string
con.State Closed System.Data.ConnectionState
+ this {UDS.Components.Database} UDS.Components.Database