为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
神不在的星期二 2021-05-31 17:52:23
我在 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.DataTarget 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()
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我认为存在问题,因为您同时访问(从 15 个单独的线程)static SqlConnection _connstatic的成员DbHelper。我会static SqlConnection _conn从DbHelper班级中删除该成员,因为您是在Function1. 既然你正在写这个:


using (SqlConnection con = DbHelper.Connect())

{

   // code stuff here...

}

在使用结束时,SqlConnection con 正在被处理。在另一个线程中,Funtion1 可能只是在调用 con.Open(); 从而导致空指针引用。


查看完整回答
反对 回复 2021-06-05
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信