Web サイトの接続プールに問題があることがわかり、追跡中です。探すべきことの 1 つは、SQLDataReaders が閉じられていることを確認することです。私の頭に浮かんだ 1 つの質問は、SQLDataReaders を返すメソッドと、それらがどのように閉じられるか (または閉じられないか) についてでした。
だからここに私が物事をセットアップする方法といくつかのメソッドの例があります:
public static SqlDataReader ExecuteReader(SqlCommand cmd)
{
SqlConnection c = new SqlConnection(Properties.Settings.Default.DatabaseConn);
cmd.Connection = c;
c.Open();
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
次に、「ExecuteReader()」を使用するメソッドがあります
public static SqlDataReader GetData()
{
SqlCommand Query = new SqlCommand("select * from SomeTable");
return ExecuteReader(Query);
}
ここで、'GetData' を呼び出す別のメソッドがあるとします。私は明らかに物事を単純化しました。
public static SqlDataReader GetMoreData()
{
return GetData;
}
だから私の質問は、このように「GetMoreData」を呼び出すときです
SqlDataReader dr = GetMoreData();
//do some stuff with 'dr'
dr.close();
すべてのSqlDataReadersと接続が適切に閉じられていますか?
ありがとう!