Я довольно новичок в разработке asp.net, поэтому вы можете сказать, что я разработал плохо закодированное приложение, которое выдает мне эту ошибку.
Истекло время ожидания. Время ожидания истекло до получения соединения из пула.
Я попытался выполнить поиск в Google и обнаружил, что это происходит из-за незакрытых соединений в пуле приложений, поэтому я тщательно изучил свое приложение и вставил ключевое слово для всех Sqlconnections, но все же у меня возникла эта проблема, вот пример кода из моего приложения , Все Sqlconnections заключены в использование следующим образом.
using (Connection = new SqlConnection(CIPConnection))
{
string ReturnValue = String.Empty;
try
{
SqlDataReader Reader;
Connection.Open();
string CommandText = "SELECT * FROM Users WHERE NAME = @NAME AND PASSWORD = @PASSWORD";
Command = new SqlCommand(CommandText, Connection);
Command.Parameters.AddWithValue("@NAME", UserName);
Command.Parameters.AddWithValue("@PASSWORD", Password);
Reader = Command.ExecuteReader();
Reader.Read();
if (Reader.HasRows)
{
Session["ID"] = Reader["ID"];
Session["NAME"] = Reader["NAME"];
Session["DEPARTMENT"] = Reader["DEPARTMENT"];
switch (Reader["DEPARTMENT"].ToString())
{
case "Admin":
ReturnValue = "Admin";
break;
case "Editing":
ReturnValue = "Editing";
break;
case "Sales and Support":
ReturnValue = "Sales and Support";
break;
case "Writing":
ReturnValue = "Writing";
break;
default:
ReturnValue = "Sorry";
break;
}
}
}
catch (Exception exp)
{
Response.Write(exp.Message.ToString());
}
return ReturnValue;
}
Теперь мой вопрос: нужно ли закрывать Connection даже при использовании блока операторов? Какой будет лучший способ закрыть соединение? (помещая его в блок finally с каждым оператором try?) я должен также использовать оператор using с SqlReader и SqlCommand? Скажите, пожалуйста, лучший способ избавиться от неиспользуемых соединений, чтобы я мог решить эту проблему.
Спасибо.