rana-writes
جمعه 02 دی 1390, 22:10 عصر
سلام دوستان برنامه نويس
در مورد اين خطا
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
سوال داشتم
من تقريبا يك سال و خورده اي هست كه سايتم آپ شده ولي تا حالا همچين خطايي نداشتم.
از امروز اين پيام رو ميگيرم تو سايتم
الانم يكي در ميون اين صفحه خطا مياد. وقتي يه صفحه رو باز ميكنم يه بار خطا ميده و شايد دو سه بار ديگه كه باز ميكنم خطا نميده
يعني ممكنه مشكل از هاست باشه؟
تو سرچي كه كردم توي سايت گفته بودن به علت نبستن كانكشنها بوده و بعد نوشته بودن اگه از using توي كانكشن استفاده بشه اين مشكل حل ميشه
شيوه كدنويسي و اتصالم به ديتابيس رو اينجا ميذارم، ميشه بررسي كنين بگين كارم درسته يا نه؟
و الان بايد براي برطرف شدن اين خطا چكار كنم؟
ممنون از راهنماييتون
من اينطوري متصل ميشم به ديتابيس، يه كلاس ساختم و توش كانكشن استرينگ رو قرار دادم
public static SqlConnection ConnectToMyDb()
{
string ConnectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
SqlConnection connection = new SqlConnection(ConnectionString);
try
{
connection.Open();
}
catch
{
}
return connection;
}
بعد توي يه كلاس ديگه تابعها رو نوشتم مثلا براي درج يا انتخاب از بانك به اين شكل:
//تابع درج نویسنده جدید
public static int InsertAuthor(string FName, string Lname, string BYear, Int16 Type, string Comment)
{
int row = 0;
using (SqlConnection connection = ConnectionManager.ConnectToMyDb())
{
SqlCommand command = new SqlCommand("Pub_InsertAuthor", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@FName", SqlDbType.NVarChar).Value = FName;
command.Parameters.Add("@LName", SqlDbType.NVarChar).Value = Lname;
command.Parameters.Add("@BYear", SqlDbType.Char).Value = BYear;
command.Parameters.Add("@Type", SqlDbType.TinyInt).Value = Type;
command.Parameters.Add("@Comment", SqlDbType.NVarChar).Value = Comment;
row = command.ExecuteNonQuery();
}
return row;
}
//نمایش اطلاعات کتاب
public static SqlDataReader ReadBook(int BookId)
{
SqlConnection connection = ConnectionManager.ConnectToMyDb();
SqlCommand command = new SqlCommand("Pub_ShowBook", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@BookId", SqlDbType.Int).Value = BookId;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
return reader;
}
بعد هم توي برنامه اينطوري فراخواني ميكنم:
//فراخواني كتاب
using (SqlDataReader reader = PublishDataAccess.ReadBook(BookId))
{
if (reader.Read())
{
//درج كدهاي فراخواني فيلدهاي مختلف در متغيرها
}
}
توي سايتم هم از گريدويو استفاده كردم كه اون رو با استفاده از استورپروسيجر پر كردم.
آيا اين شيوه اصلا درسته؟
براي برطرف شدن خطاي ايجاد شده بايد چكار كنم؟
ممنون از راهنماييتون
بعدا اضافه شده در ساعت 23:11 :
الان يه اشكال بدتر پيش اومده
من از سرور اكسپلورر ويژوال استوديو به صورت ريمون به ديتابيسم وصل ميشم
دقيقا همين خطا رو اونجا هم دارم.
اشكال الان ديگه قطعا از هاسته درسته؟
در مورد اين خطا
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
سوال داشتم
من تقريبا يك سال و خورده اي هست كه سايتم آپ شده ولي تا حالا همچين خطايي نداشتم.
از امروز اين پيام رو ميگيرم تو سايتم
الانم يكي در ميون اين صفحه خطا مياد. وقتي يه صفحه رو باز ميكنم يه بار خطا ميده و شايد دو سه بار ديگه كه باز ميكنم خطا نميده
يعني ممكنه مشكل از هاست باشه؟
تو سرچي كه كردم توي سايت گفته بودن به علت نبستن كانكشنها بوده و بعد نوشته بودن اگه از using توي كانكشن استفاده بشه اين مشكل حل ميشه
شيوه كدنويسي و اتصالم به ديتابيس رو اينجا ميذارم، ميشه بررسي كنين بگين كارم درسته يا نه؟
و الان بايد براي برطرف شدن اين خطا چكار كنم؟
ممنون از راهنماييتون
من اينطوري متصل ميشم به ديتابيس، يه كلاس ساختم و توش كانكشن استرينگ رو قرار دادم
public static SqlConnection ConnectToMyDb()
{
string ConnectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
SqlConnection connection = new SqlConnection(ConnectionString);
try
{
connection.Open();
}
catch
{
}
return connection;
}
بعد توي يه كلاس ديگه تابعها رو نوشتم مثلا براي درج يا انتخاب از بانك به اين شكل:
//تابع درج نویسنده جدید
public static int InsertAuthor(string FName, string Lname, string BYear, Int16 Type, string Comment)
{
int row = 0;
using (SqlConnection connection = ConnectionManager.ConnectToMyDb())
{
SqlCommand command = new SqlCommand("Pub_InsertAuthor", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@FName", SqlDbType.NVarChar).Value = FName;
command.Parameters.Add("@LName", SqlDbType.NVarChar).Value = Lname;
command.Parameters.Add("@BYear", SqlDbType.Char).Value = BYear;
command.Parameters.Add("@Type", SqlDbType.TinyInt).Value = Type;
command.Parameters.Add("@Comment", SqlDbType.NVarChar).Value = Comment;
row = command.ExecuteNonQuery();
}
return row;
}
//نمایش اطلاعات کتاب
public static SqlDataReader ReadBook(int BookId)
{
SqlConnection connection = ConnectionManager.ConnectToMyDb();
SqlCommand command = new SqlCommand("Pub_ShowBook", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@BookId", SqlDbType.Int).Value = BookId;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
return reader;
}
بعد هم توي برنامه اينطوري فراخواني ميكنم:
//فراخواني كتاب
using (SqlDataReader reader = PublishDataAccess.ReadBook(BookId))
{
if (reader.Read())
{
//درج كدهاي فراخواني فيلدهاي مختلف در متغيرها
}
}
توي سايتم هم از گريدويو استفاده كردم كه اون رو با استفاده از استورپروسيجر پر كردم.
آيا اين شيوه اصلا درسته؟
براي برطرف شدن خطاي ايجاد شده بايد چكار كنم؟
ممنون از راهنماييتون
بعدا اضافه شده در ساعت 23:11 :
الان يه اشكال بدتر پيش اومده
من از سرور اكسپلورر ويژوال استوديو به صورت ريمون به ديتابيسم وصل ميشم
دقيقا همين خطا رو اونجا هم دارم.
اشكال الان ديگه قطعا از هاسته درسته؟