PDA

View Full Version : روش رفرش کردن سرور چیه ؟



mjfakhr
پنج شنبه 15 مرداد 1388, 17:11 عصر
سلام
من در برنامه تحت وبم فراموش کرده بودم کانکشن رو کلوز کنم در نتیجه بعد از 40 الی 50 پاسخگویی ، برنامه خطا می داد . حالا که متوجه شدم و برنامه رو اصلاح کردم و بعد هم آپلود کردم بازم خطا تکرار می شه . فکر می کنم کانکشن هایی که از قبل باز بودن بسته نشدن
حالا می خوام بدونم چطوری باید سرور را رفرش کنم تا کانکشن های باز بسته بشن ؟

behnam-s
پنج شنبه 15 مرداد 1388, 17:23 عصر
کانکشن ها timeout دارند، نمی تونن باز مونده باشن!
خطا از جای دیگست،موقع open کردن کانکشن از کد زیر استفاده کنین

if(conn.State==ConnectionState.Closed)
conn.Open();
علت اینکه بعد از 40 الی 50 پاسخگویی ، برنامه خطا می داد timeout شدن کانکشن بوده(احتمالاً). برای توابعی که زیاد و پشت سرهم اجرا می شن از کد بالا استفاده کنین

mjfakhr
پنج شنبه 15 مرداد 1388, 18:22 عصر
دوست عزیز behnam-s (http://barnamenevis.org/forum/member.php?u=111805)
از پاسخ شما متشکرم

من طبق گفته شما دستور رو اضافه کردم و بعد هم سایت رو دوباره پابلیش و آپلود کردم . ولی باز هم همون خطای قبلی رو دریافت می کنم متن خطا رو می ذارم . لطفا راهنمایی کنید . با تشکر



Server Error in '/' Application.

Unspecified error

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Unspecified error

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:

[OleDbException (0x80004005): Unspecified error] System.Data.OleDb.OleDbConnectionInternal..ctor(Ol eDbConnectionString constr, OleDbConnection connection) +969373 System.Data.OleDb.OleDbConnectionFactory.CreateCon nection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +86 System.Data.ProviderBase.DbConnectionFactory.Creat eNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +29 System.Data.ProviderBase.DbConnectionFactory.GetCo nnection(DbConnection owningConnection) +4863644 System.Data.ProviderBase.DbConnectionClosed.OpenCo nnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 System.Data.OleDb.OleDbConnection.Open() +40 Main.Button2_Click(Object sender, EventArgs e) +1565 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEven t(String eventArgument) +110 System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

Version Information: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET Version:2.0.50727.3074

behnam-s
پنج شنبه 15 مرداد 1388, 19:02 عصر
سلام
اگه ممکنه سورس صفحتون را اینجا بذارید .
چرا از OleDb استفاده می کنید؟ ADO.NET به این زیبایی که هست!

mjfakhr
پنج شنبه 15 مرداد 1388, 19:15 عصر
کد برنامه رو می ذارم . فقط این نکته رو توضیح بدم که با گذاشتن Try سعی کردم محل بروز خطا رو در سرور شناسایی کنم .
متوجه شدم کانکشن خطا نداره بکه اون خطی که تعداد سطرهای موجود در جدول دیتاست رو کنترل می کنه خطا رو تولید می کنه If ds.Tables("karname").Rows.Count = 1 Then همون سطری که با رنگ قرمز مشخص کردم .
هر چی فکر می کنم علت چیه به نتیجه ای نمی رسم


ProtectedSub Button2_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles Submit.Click 'Serch


Dim SQLSelect AsString
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Dim adapt As OleDbDataAdapter
Dim ds As DataSet

Dim path AsString = Server.MapPath("./Database/")
Dim DatabaseName AsString
'
SelectCase DropDownList1.SelectedValue
Case"3" : DatabaseName = "Razavi Nemune Dabirstan 88.mdb"
Case"4" : DatabaseName = "Shomali Nemune Dabirstan 88.mdb"
EndSelect
'
con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & DatabaseName & ";Persist Security Info=False;Jet OLEDB:Database Password=aspco")
If StrFN <> ""Then
SQLSelect = "Select * From Karname where FName = '" & StrF & "' and LName = '" & StrLN & "' and FathName = '" & StrFN & "'"
Else
SQLSelect = "Select * From Karname where FName = '" & StrF & "' and LName = '" & StrLN & "'"
EndIf
cmd = New OleDbCommand(SQLSelect, con)
adapt = New OleDbDataAdapter(cmd)
ds = New DataSet()
If con.State = ConnectionState.Closed Then con.Open()
adapt.Fill(ds, "karname")
con.Close()
'
If ds.Tables("karname").Rows.Count = 1 Then
Session("main") = True
Session("manager_name") = ds.Tables("karname").Rows(0).Item("fname") + " " + ds.Tables("karname").Rows(0).Item("lname")
Session("fname") = ds.Tables("karname").Rows(0).Item("fname")
Session("lname") = ds.Tables("karname").Rows(0).Item("lname")
Session("CodStu") = ds.Tables("karname").Rows(0).Item("CodStudent")
Session("fathername") = ds.Tables("karname").Rows(0).Item("fathname")
Session("moadel") = ds.Tables("karname").Rows(0).Item("moadel")
Session("NomreMoadel") = ds.Tables("karname").Rows(0).Item("NomreMoadel")
Session("NomreQuestion") = ds.Tables("karname").Rows(0).Item("NomreQuestion")
Session("NomreKoll") = ds.Tables("karname").Rows(0).Item("NomreKoll")
Session("RotbeHoze") = ds.Tables("karname").Rows(0).Item("Akharin")
Session("Zarfiyat") = ds.Tables("karname").Rows(0).Item("Zarfiyat")
Session("VaziatStu") = ds.Tables("karname").Rows(0).Item("VaziatStu")
Response.Redirect("resualt.aspx")
Else
Session("main") = False
Label1.Text = " . "
LastN.BackColor = Drawing.Color.Yellow
FatherN.BackColor = Drawing.Color.Yellow
TxtF.BackColor = Drawing.Color.Yellow
EndIf
'
EndSub

mjfakhr
پنج شنبه 15 مرداد 1388, 20:27 عصر
لطفا یکی پیدا بشه و بگه خطای کد بالا چیه . خیلی مهمه ؟!

behnam-s
پنج شنبه 15 مرداد 1388, 21:51 عصر
قبل از خطی که با قرمز مشخص کردین چرا connection رو میبندید؟

con.Close()
If ds.Tables("karname").Rows.Count = 1 Then
در ضمن فکر می کنم استفاده از session با این تعداد، زیاد درست نباشه

mjfakhr
شنبه 17 مرداد 1388, 09:23 صبح
علت استفاده از Session این بوده که من نیاز دارم مقادیری رو به صفحه دیگه ارسال کنم .
شما در این مورد به جای Session چی پیشنهاد می کنید ؟

m_d6712
شنبه 17 مرداد 1388, 10:35 صبح
می خوای یه ID رو فقط به سشن بده! بفیه رو در صفحات بعد دوباره از دیتابیس بگیر! بهتره!

1000 تا راه دیگه پیدا می شه! ولی این راه با این همه سشن درست نیست!

mjfakhr
شنبه 17 مرداد 1388, 10:43 صبح
بنظرم می رسه بخاطر اینکه عمل اتصال به بانک داده دو بار انجام نشه ، در صفحه اول مقادیر رو از کاربر بگیرم و رشته جستجو رو شکل بدم و در یک سشن بریزم بعد در صفحه دوم با استفاده از مقدار موجود در سشن در بانک جستجو رو انجام بدم . اگر رکوردی برگشت که نمایش داده می شه در غیر اینصورت به صفحه اول برگشت داده بشه .
حالا به نظرتون منطقی شد ؟

m_d6712
شنبه 17 مرداد 1388, 10:45 صبح
من فکر می کنم بیشتر از اینکه باید نگران تعداد زیاد اتصال به بانک باشی باید نگران تعداد زیاد سشن باشی! مشکل ساز میشه واست ها!

mjfakhr
شنبه 17 مرداد 1388, 10:51 صبح
این نکته رو هم باید بگم در مورد خطای برنامه تنها کاری که کردم محل Conn.Close رو به بعد از دستور If انتقال دادم و به نظر الان برنامه درست کار می کنه .
البته نفهمیدم علت بروز خطا در روز پنجشنبه چی بود چون تا آخر شب که من تست می کردم خطا می داد ولی صبح شنبه همون برنامه درست کار می کرد .
حالا که می گید سیشن می تونه مشکل ساز باشه ، به این فکر می کنه که ممکنه بعلت ترافیک بالای سایت و تعداد زیاد سیشن ها این خطا رخ داده باشه .

یک سوال : مگه سیشن بعد از Time Out یا Log Off شدن کاربر خود به خود از بین نمی ره ؟

m_d6712
شنبه 17 مرداد 1388, 10:55 صبح
چرا از بین میره! اما تعداد زیاد باعث میشه فشار زیادی به سرور بیاد! فکر کن اگه 50 نفر همزمان وارد سایت بشن! چی میشه! واسه 1 یا 2 مشکلی بوجود نمیآد!