昨天还好好的 今天早上登入页面时提示错误如下 我也看不出到是哪里的问题 还请各位高手帮忙解决谢谢
未将对象引用设置到对象的实例。 
说明: 执行当前 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 

解决方案 »

  1.   

    源文件: d:\inetpub\wwwroot\uds\components\database.cs 行: 103  这个database.cs贴出来看看。
      

  2.   

    各位高手 有一点 我估计应该不是程序的问题 我把以前的备份的版本拷贝出来还是这个错误 以前的版本肯定是没有问题的 我测试过, 可能是iis 配置 问题 我在 iis 默认网站 属性 里面 看不到ASP.net 这一项 不知道是不是这个问题
      

  3.   

    各位高手 有一点 我估计应该不是程序的问题 我把以前的备份的版本拷贝出来还是这个错误 以前的版本肯定是没有问题的 我测试过, 可能是iis 配置 问题 我在 iis 默认网站 属性 里面 看不到ASP.net 这一项 不知道是不是这个问题
      

  4.   

    if(con ==null ||con.State == System.Data.ConnectionState.Closed)
      

  5.   

    调试跟踪一下
    con是不是空
      

  6.   

    使用数据库操作类sqlhelper
    检查系统日志
    Aspnet_regiis -i重新安装
      

  7.   

    using System;
    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;
    }
    }
    }
    ————————————————————————————————————
    红色就是现在报错的地方提示 未将对象引用设置到对象的实例。 
      

  8.   

    con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); 
    在报错的上面一句是判断如果con为空,则从配置文件里读出数据库连接,估计是这里有问题,估计是iis还是什么的原因没有读出内容来,con仍为null,造成下面判断它的State 时报错!!!
      

  9.   

    con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); 断点调试 con 显示的错误如下 请高手帮我看看 
    ——————————————————————————————
    - 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