对象引用未设置为对象的实例(仅在发布站点时出错)

时间:2015-07-22 12:52:04

标签: c# postgresql

当我在localhost下运行代码或调试它时。它不会给我任何错误但是当我发布它并在我的服务器中运行它时,有时它会给出以下错误。

  

********** 22-07-2015 17:35:20 **********   异常类型:System.NullReferenceException   例外:对象引用未设置为对象的实例。   资料来源:LiveRecordInGrid   堆栈跟踪:      at GPCBDataMonitoring.GPCBConMethod.Select_Data(String query)      在LiveRecord.LiveRecordInGrid()

     

********** 22-07-2015 17:51:28 ********** 异常类型:System.NullReferenceException 例外:对象引用未设置为对象的实例。 资料来源:LiveRecordInGrid 堆栈跟踪:    在LiveRecord.LiveRecordInGrid()

********** 22-07-2015 17:51:28 ********** 异常类型:System.NullReferenceException 例外:对象引用未设置为对象的实例。 来源:FillListView 堆栈跟踪:    at GPCBDataMonitoring.GPCBConMethod.Select_Data(String query)    在SiteSettings.FillListView()

我的方法如下..

#region Fill LiveRecord
public void LiveRecordInGrid()
{
    try
    {
        gvLiveRecord.DataSource = null;

        #region Store All Parameter of Site In Array "ParaArray"
        DataTable dt1 = new DataTable();
        string getSiteParameter = "Select \"Parameter\" from \"SiteList\" where \"SiteId\" = " + Convert.ToInt64(Session["SiteId"].ToString()) + "";
        try
        {
            dt1 = GPCBConMethod.Select_Data(getSiteParameter);
        }
        catch (Exception ex)
        {
            ExceptionUtility.LogException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
        }
        if (dt1.Rows.Count > 0)
        {
            string varSitePara = dt1.Rows[0]["Parameter"].ToString();
            ParaArray = varSitePara.Split(new string[] { "," }, StringSplitOptions.None);
            Array.Sort(ParaArray);
        }
        #endregion

        #region Select Only All Latest Parameter Value Using DateTime
        DataTable dt = new DataTable();
        //dt = null;
        foreach (string s in ParaArray)
        {
            string query = "Select * from \"SiteParaData\" where \"SitId\" = " + Convert.ToInt64(Session["SiteId"].ToString()) + " and \"ParaName\" = '" + s.ToString() + "' order by \"RecordDate\" Desc limit 1";
            if (dt.Rows.Count > 0)
            {
                DataRow drMain = dt.NewRow();
                DataTable dt2 = new DataTable();
                //dt2 = null;
                DataRow drTemp = dt2.NewRow();
                try
                {
                    dt2 = GPCBConMethod.Select_Data(query);
                }
                catch (Exception ex)
                {
                    ExceptionUtility.LogException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
                }
                if (dt2.Rows.Count > 0)
                {
                    drTemp = dt2.Rows[0];
                    drMain.ItemArray = drTemp.ItemArray;
                    dt.Rows.Add(drMain);
                }
            }
            else
            {
                try
                {
                    dt = GPCBConMethod.Select_Data(query);
                }
                catch (Exception ex)
                {
                    ExceptionUtility.LogException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
                }
            }
        }
        #endregion

        #region Fill GridView From DataTable
        if (dt.Rows.Count > 0)
        {
            FillGridView(dt);
        }
        else
        {
            gvLiveRecord.DataSource = null;
            gvLiveRecord.EmptyDataText = "No Live Record Found For Selected Site";
            gvLiveRecord.DataBind();
            lblNoRecord.Text = "";
        }
        #endregion
    }
    catch (Exception ex)
    {
        ExceptionUtility.LogException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
    }
}
#endregion

#region Bind GridView
public void FillGridView(DataTable dt)
{
    try
    {
        lblUpdtTime.Text = "";
        DataColumn newColumn1 = new DataColumn("Name", typeof(System.String));
        newColumn1.DefaultValue = Session["SiteName"].ToString();
        dt.Columns.Add(newColumn1);
        DataColumn newColumn2 = new DataColumn("LastUpdatedDate", typeof(System.String));
        newColumn2.DefaultValue = System.DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
        dt.Columns.Add(newColumn2);
        lblNoRecord.Text = "";
        gvLiveRecord.DataSource = dt;
        gvLiveRecord.DataBind();
        lblUpdtTime.Text = "Last Data Update On: " + System.DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
    }
    catch (Exception ex)
    {
        ExceptionUtility.LogException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
    }
}
#endregion


  public static DataTable Select_Data(string query)
    {
        try
        {
            using (con = new NpgsqlConnection(conStr))
            {
                con.Open();
                cmd = new NpgsqlCommand(query, con);
                dt = new DataTable();
                da = new NpgsqlDataAdapter(cmd);
                da.Fill(dt);
            }
            // Update_Operation();
            return dt;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            //cmd.Connection.Close();
            cmd = null;
            con.Close();
            con = null;
        }
    }

我只是没有得到我犯错误的地方。我认为错误仅来自Select_Data,但我无法追踪或解决它。

我每3秒在计时器的tick事件中调用此函数(LiveRecordInGrid)。

- >我通过逐步调试我的代码,多次检查数据表。我正在收集数据。

- >我正在使用PGAdmin-III(PostgreSQL)。

这个错误只出现在第一次或第二次,而我点击了菜单中的链接,下次没有几分钟就来了......

先谢谢。

0 个答案:

没有答案