我在 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 關注
- 208 瀏覽
添加回答
舉報
0/150
提交
取消