السلام عليكم اخوواني
انا حاليا اصمم موقع للدردشة ...
و عندما يدخل مستخدم للروم .. فان الموقع يطلب اسمه ليقوم بالمشاركة في الرووم .. و يصبح "اونلاين"
لكن المشكلة هي عندما يقوم بالخروج .. فيفرض ان يقوم الموقع بارسال بيانات للسيرفر تفيد بان هذا المستخدم اصبح الان غير متوفر و اصبح "اوفلاين"
فباختصار انا اريد تنفيذ امر عند الخروج من الصفحة .. و ارسال بيانات للسيرفر في نفس الوقت
تحياتي ....
اخي العزيز .. يمكنك ادراج ملف Global.asax واستخدام الـ session
كيف اخي الغالي ؟؟ اتمنى منك ان ترفق مثال بسيط جدا .. فقط يقوم بالاتصال بالسيرفر عند الخروج
شكرا لك اخي
up ...........
Global.asax
فيها عدة احداث حتما ان اطلعت عليها ستعرفها تلقائيا انظر للملف لدي
كود :
<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Application("activeuser") = 0
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
Session("start") = DateTime.Now
Application.Lock()
Application("activeuser") = Convert.ToInt32(Application("activeuser")) + 1
Application.UnLock()
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
Application.Lock()
Application("activeuser") = Convert.ToInt32(Application("activeuser")) - 1
Application.UnLock()
End Sub
</script>
وضمن حدث تحميل الصفحة الرئيسية
كود :
If Not IsPostBack Then Dim i As Integer = Convert.ToInt32(Application("activeuser"))
' Response.Write("عدد الزوار الان: " & i.ToString())
' Application("activeuser") += 1
visit.InnerText = "عدد الزوار الان: " & i.ToString
End If
سعود كتب :Global.asax
فيها عدة احداث حتما ان اطلعت عليها ستعرفها تلقائيا انظر للملف لدي
كود :
<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Application("activeuser") = 0
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
Session("start") = DateTime.Now
Application.Lock()
Application("activeuser") = Convert.ToInt32(Application("activeuser")) + 1
Application.UnLock()
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
Application.Lock()
Application("activeuser") = Convert.ToInt32(Application("activeuser")) - 1
Application.UnLock()
End Sub
</script>
وضمن حدث تحميل الصفحة الرئيسية
كود :
If Not IsPostBack Then Dim i As Integer = Convert.ToInt32(Application("activeuser"))
' Response.Write("عدد الزوار الان: " & i.ToString())
' Application("activeuser") += 1
visit.InnerText = "عدد الزوار الان: " & i.ToString
End If
شكرا اخي العزيز سعود .. لكن المشكلة انها تنفذ فقط عند دخول المستخدم و لا يتم تنفيذ اي شيء عند خروجه
اتمنى منك ان تنظر الى المشروع و ان تقوم بالتعديل عليه اذا كنت قد اخطأت بشيء
شكرا مرة اخرى
http://vb4arb.com/vb/uploaded/65_11350468488.rar
بل انها تعمل لكن لابد من خطوة في ملف التكوين
كود :
<sessionState mode="InProc" timeout="10" cookieless="false"></sessionState>
تضعها ضمن system.web
شكرا اخي لكن اين اضعها بالضبط ؟
في اي مكان في ملف web.config ضمن system.web
لو حبيت ضعها في نهاية system.web قبل وسم الاغلاق
الرقم 10 بالدقائق قللها لترى النتيجة بشكل اسرع