تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] برأيكم ما هي الطريقة الأمثل لعرض رسائل الخطأ المعادة من قاعدة البيانات
#9
طريقة الاخوان جميله جدا و عمليه ،، بالنسبه لي انا احب اتحكم بكتابة اكوادي لاقصى درجه ، و طالما اقدر اتعامل معاه  فلا بأس بكتابتي للاكواد لانها لا تمنعك من فعل ما تريد بعكس المكاتب المغلقه او المطوره من خلال غيرك ، لانها تتناسب مع مزاجي  ما عدى حالات متقدمه مثل تطوير مكتبة ضغط ملفات و عرض pdf و  و الخ  هنا تستخدم مكاتب خارجية  جاهزه  و معتمده  ، على العموم الشغله الي استخدمتها جدا بسيطه  وهي كالتالي  :  

تضيف هذا الكلاس لانه راح يحمل بيانات الخطأ  البرمجي الذي حصل  :  

كود :
    Public Class ReportErrorTable

#Region " Private variables "
        Private ReportErrorID_Att As Integer  '  رقم التقرير
        Private ReportErrorTitle_Att As String  '  عنوان التقرير
        Private ReportErrorInsertDate_Att As Date  '  تاريخ الحدوث
        Private ReportErrorInsertTime_Att As TimeSpan  '  وقت الحدوث
        Private ReportErrorPageLink_Att As String  '  رابط الصفحه
        Private ReportErrorContent_Att As String  '  محتوى التقرير
        Private ReportErrorUserID_Att As Integer  '  رقم المستخدم
        Private ReportErrortype_Att As String  '  نوع التقرير

#End Region

#Region " Properties "
        ''' <summary>
        '''رقم التقرير
        ''' </summary>
        Public Property ReportErrorID As Integer
            Get
                Return ReportErrorID_Att
            End Get
            Set(ByVal ReportErrorID_value As Integer)
                ReportErrorID_Att = ReportErrorID_value
            End Set
        End Property

        ''' <summary>
        '''عنوان التقرير
        ''' </summary>
        Public Property ReportErrorTitle As String
            Get
                Return ReportErrorTitle_Att
            End Get
            Set(ByVal ReportErrorTitle_value As String)
                ReportErrorTitle_Att = ReportErrorTitle_value
            End Set
        End Property

        ''' <summary>
        '''تاريخ الحدوث
        ''' </summary>
        Public Property ReportErrorInsertDate As Date
            Get
                Return ReportErrorInsertDate_Att
            End Get
            Set(ByVal ReportErrorInsertDate_value As Date)
                ReportErrorInsertDate_Att = ReportErrorInsertDate_value
            End Set
        End Property

        ''' <summary>
        '''وقت الحدوث
        ''' </summary>
        Public Property ReportErrorInsertTime As TimeSpan
            Get
                Return ReportErrorInsertTime_Att
            End Get
            Set(ByVal ReportErrorInsertTime_value As TimeSpan)
                ReportErrorInsertTime_Att = ReportErrorInsertTime_value
            End Set
        End Property

        ''' <summary>
        '''رابط الصفحه
        ''' </summary>
        Public Property ReportErrorPageLink As String
            Get
                Return ReportErrorPageLink_Att
            End Get
            Set(ByVal ReportErrorPageLink_value As String)
                ReportErrorPageLink_Att = ReportErrorPageLink_value
            End Set
        End Property

        ''' <summary>
        '''محتوى التقرير
        ''' </summary>
        Public Property ReportErrorContent As String
            Get
                Return ReportErrorContent_Att
            End Get
            Set(ByVal ReportErrorContent_value As String)
                ReportErrorContent_Att = ReportErrorContent_value
            End Set
        End Property

        ''' <summary>
        '''رقم المستخدم
        ''' </summary>
        Public Property ReportErrorUserID As Integer
            Get
                Return ReportErrorUserID_Att
            End Get
            Set(ByVal ReportErrorUserID_value As Integer)
                ReportErrorUserID_Att = ReportErrorUserID_value
            End Set
        End Property

        ''' <summary>
        '''نوع التقرير
        ''' </summary>
        Public Property ReportErrortype As String
            Get
                Return ReportErrortype_Att
            End Get
            Set(ByVal ReportErrortype_value As String)
                ReportErrortype_Att = ReportErrortype_value
            End Set
        End Property


#End Region


    End Class


الفكره في تصيد الخطأ في تطبيق  Asp.Net بالكامل  يكمن في وضع اكوادك بداخل  ملف  Global.asax تحديدا في  الحدث  Application_Error  هنا  عندما يكون هناك رابط مفقود بالموقع او  حصل خطا في قاعدة البيانات  او  خطأ منطقي  يتم تفعيل هذا الحدث  ،  طبعا هذا الكود الخاص بي  لعملية تعبئة بيانات الخطا في متغير من نوع الكلاس الذي بالاعلى  ،  و هذا هو الكود  : 

كود :
  
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when an unhandled error occurs
        If HttpContext.Current.Request.Url.AbsoluteUri.Contains("localhost") = False Then
            Dim con As HttpContext = HttpContext.Current
            Dim v = Server.GetLastError()
            Dim VisitNo As Integer = 0
            Dim oReportError As New ReportErrorTable
            oReportError.ReportErrorTitle = Trim(Convert.ToString(v.Message))
            oReportError.ReportErrorPageLink = Trim(Convert.ToString(con.Request.Url))
            oReportError.ReportErrorContent = Trim(Convert.ToString(v.InnerException))
            Try
                VisitNo = Val(System.Web.HttpContext.Current.Session("VisitorIDNo"))
            Catch ex As Exception
            End Try

            oReportError.ReportErrorUserID = VisitNo

             
            Dim HttpEx = TryCast(v, HttpException)
            If HttpEx IsNot Nothing AndAlso HttpEx.GetHttpCode() = 404 Then
                '   ' Invalid URL
                oReportError.ReportErrortype = Trim("Miss_Link")
                oReportError.insertIntoReportErrorTable()
                Server.Transfer("~/PageNotFound.aspx")
            Else
                ' ' Exception 
                oReportError.ReportErrortype = Trim("Error")
                oReportError.insertIntoReportErrorTable()
                ' ' Here save text file containing this error details
                Server.Transfer("~/PageShowError.aspx")
            End If
        End If
     
    End Sub



طبعا اذا كنت تشتغل على جهازك ما راح  يتفعل الكود و راح يظهر لك الخطا بالشاشة الصفراء لتحل الخطأ لكن عندما يرفع للسيرفر يتفعل الحدث و يمكن  تجربته على جهازك الحالي من خلال  حذف هذا السطر  : 

كود :
If HttpContext.Current.Request.Url.AbsoluteUri.Contains("localhost") = False Then


ايضا بالنسبه لي في عملية الاخطا التي تحصل بسبب  قواعد البيانات  ، بحث و وصلت لنتيجه وهو لماذا عندا يحصل خطا في المدخلات على جمل الاستعلام لا احفظ جملة الاستعلام بالمدخلات التي قام بها المستخدم  و حفظها في ملف  نصي و عندما اقوم بتجربته لا احتاج ان اسأل المستخدم ما الذي ادخلته كل ما احتاجه هو  جملة  Query  التي طبقها المستخدم على قاعدة البيانات  مضمنه بالمتغيرات  التي ادخلها و عندها اعرف سبب الخطا  ،،  و سأكتب عنها  المره القادمه اذا اسعفني الوقت ، لاني غالبا اتصفح المنتدى من خلال هاتفي 


تحياتي  ،،  وشكرا على الكود الذي شاركته
اسم معرفي : محمد يحيى
الرد }}}
تم الشكر بواسطة: samerselo , samerselo


الردود في هذا الموضوع
RE: برأيكم ما هي الطريقة الأمثل لعرض رسائل الخطأ المعادة من قاعدة البيانات - بواسطة myalsailamy - 06-05-16, 08:42 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 104 07-12-25, 10:22 AM
آخر رد: justforit
  كيف نعالج هذا الخطأ - FormatException justforit 4 289 25-10-25, 06:46 AM
آخر رد: justforit
  جهاز ارسال رسائل SMS من خلال برنامج فيجوال بيسك جيولوجي مبتدئ 4 1,024 05-09-25, 12:37 PM
آخر رد: جيولوجي مبتدئ
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 832 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  اين الخطأ فى هذا السطر _ جزاكم الله كل خير abo ragab 2 654 10-08-25, 03:53 AM
آخر رد: abo ragab
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 797 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  [VB.NET] أين الخطأ فى هذا السطر وجزاكم الله خيرا abo ragab 2 689 10-07-25, 09:35 PM
آخر رد: abo ragab
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,248 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,028 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  ما هو الخطأ فى هذا الكود خالد كامل1 10 1,181 28-05-25, 09:16 PM
آخر رد: خالد كامل1

التنقل السريع :


يقوم بقرائة الموضوع: