对象引用未设置为 con.Open() 上的对象实例;

我在 jquery 中有 15 个同时执行的 ajax 调用,调用它们各自的 c# 函数(每个 ajax 有单独的 c# 函数)以下是示例 c# sql 函数


public static DataSet Function1(int arg, string arg2, string arg3, string arg4, int arg5, int arg6)

        {


            DataSet ds = new DataSet();


            try

            {


                using (SqlConnection con = DbHelper.Connect())

                {

                    con.Open();

                    using (SqlCommand cmd = con.CreateCommand())

                    {

                        cmd.CommandText = "Procedure_Name";

                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.AddWithValue("@arg", arg);

                        cmd.Parameters.AddWithValue("@arg1", arg1);


                        cmd.Parameters.AddWithValue("@arg2", arg2);

                        cmd.Parameters.AddWithValue("@arg3", arg3);

                        cmd.Parameters.AddWithValue("@arg4", arg4);

                        // cmd.Parameters.AddWithValue("@arg5", arg5);

                        cmd.CommandTimeout = 0;

                        var dataAdaptor = new SqlDataAdapter(cmd);

                        dataAdaptor.Fill(ds);

                    }

                    con.Close();

                }


                ds.Tables[0].TableName = "Test";




            }

            catch (Exception ex)

            {


                throw ex;


            }


            return ds;

        }

我偶尔会遇到以下异常


 Message:Object reference not set to an instance of an object.

Source:System.Data

Target site:Boolean TryOpenInner(System.Threading.Tasks.TaskCompletionSource1[System.Data.ProviderBase.DbConnectionInternal])

Stack Trace:   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry)

   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 retry)

   at System.Data.SqlClient.SqlConnection.Open()


神不在的星期二
浏览 180回答 1
1回答

幕布斯7119047

我认为存在问题,因为您同时访问(从 15 个单独的线程)static SqlConnection _connstatic的成员DbHelper。我会static SqlConnection _conn从DbHelper班级中删除该成员,因为您是在Function1. 既然你正在写这个:using (SqlConnection con = DbHelper.Connect()){   // code stuff here...}在使用结束时,SqlConnection con 正在被处理。在另一个线程中,Funtion1 可能只是在调用 con.Open(); 从而导致空指针引用。
打开App,查看更多内容
随时随地看视频慕课网APP