سؤال

أنا أبحث عن httpexceptions في application_error sub من global.asx

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

        Dim ex As Exception = HttpContext.Current.Server.GetLastError()

        If ex IsNot Nothing Then
            If TypeOf (ex) Is HttpUnhandledException Then
                If ex.InnerException Is Nothing Then
                    Server.Transfer("error.aspx", False)
                End If
                ex = ex.InnerException
            End If

            If TypeOf (ex) Is HttpException Then
                Dim httpCode As Integer = CType(ex, HttpException).GetHttpCode()
                If httpCode = 404 Then
                    Server.ClearError()
                    Server.Transfer("error_404.aspx", False)
                End If
            End If
        End If
End Sub

يمكنني أن أتقدم عبر هذا الرمز وتأكيد أنه يضغط على server.transfer ("ERROR_404

هل كانت مفيدة؟

المحلول

هل تقوم بمسح المخزن المؤقت للاستجابة؟ ليس لديك أدنى فكرة عما هو موجود بالفعل ، لأنك تفعل ذلك في Application_error catch-all. Server.transfer فقط إلحاق كل ما تنشئه الصفحة الجديدة على الاستجابة الحالية. من الواضح أن هذا يمكن أن يخلق بعض المشكلات.

نصائح أخرى

هل يعمل إذا قمت بتغيير Server.Transfer إلى Response.Redirect؟ (قد تضطر إلى استخدام بادئة httpcontext.current من مكانك في Global.asax.)

لست متأكدًا من أن الخادم.

أعتقد أنه في حالة حدوث بعض الأخطاء ، فإن server.transfer لن يطلق النار.

server.transfer ليست طريقة جيدة لهذا الغرض. محاولة مع استجابة. يجب أن تعمل.

إذا كان لديك أي استثناء ، فهل هناك أي شرط للحفاظ على الدول؟ إذا لم يكن كذلك ، اذهب مع Response.Redirect.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top