server.transfer ("error_404.aspx") في application_error إرجاع صفحة فارغة
-
22-09-2019 - |
سؤال
أنا أبحث عن 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
.