私は危機的状況の問題に直面しています
同じナノ秒で複数のリクエストを処理しているポータルで、リーダーがランダムに閉じられている場合の無効な呼び出し試行
プロジェクトのテストまたはデバッグ中に状況が発生していない間、ここ数日から。
元:
web.configでの接続はこんな感じ
<add name="testconnection" connectionString="Data Source=1.1.1.1;Initial Catalog=testdb;MultipleActiveResultSets=True;Persist Security Info=True;User ID=testUser;Password=testpassword;Max Pool Size=20000;Min Pool Size=5;Pooling=true;" providerName="System.Data.SqlClient" />
C# のコードは次のようになります。
SqlConnection conn= new SqlConnection(ConfigurationManager.ConnectionStrings["testconnection"].ToString());
public string Adscategory(string Name)
{
string temp = string.Empty;
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand comm = new SqlCommand("select Id from TestTable where tid='" + Name + "'", conn);
try
{
temp = Convert.ToString(comm.ExecuteScalar());
}
catch{}
finally
{
conn.Close();
}
return temp;
}
今、私は2つの問題を抱えています
1- 複数の要求が同時に行われたときに、この行の comm.ExecuteScalar() で発生する、リーダーが閉じているときに Read を呼び出す無効な試行。
2-接続が閉じられませんでした。接続の現在の状態は接続中です。これは、ランダムに生成される conn.Open() で発生します。
どんな助けもかなりのものであるべきです。