我在 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(); 从而导致空指针引用。
- 1 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消