क्या सोच रहा था कि आपने इस समाधान के बारे में क्या सोचा था, अगर यह कस्टम पेज पर त्रुटि संदेश पास करने का सही तरीका है?कस्टम त्रुटि को पुनर्निर्देशित करने के लिए अंतिम त्रुटि को पारित करने का सबसे अच्छा तरीका?
web.config में:
<customErrors mode="On" defaultRedirect="~/Error.aspx"></customErrors>
Global.asax में:
<script RunAt="server">
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex != null && Session != null)
{
ex.Data.Add("ErrorTime", DateTime.Now);
ex.Data.Add("ErrorSession", Session.SessionID);
HttpContext.Current.Cache["LastError"] = ex;
}
}
</script>
मेरी Error.aspx.cs में:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
if (HttpContext.Current.Cache["LastError"] != null)
{
Exception ex = (Exception)HttpContext.Current.Cache["LastError"];
if (ex.Data["ErrorTime"] != null && ex.Data["ErrorSession"] != null)
if ((DateTime)ex.Data["ErrorTime"] > DateTime.Now.AddSeconds(-30d) && ex.Data["ErrorSession"].ToString() == Session.SessionID)
Label1.Text = ex.InnerException.Message;
}
}
मुद्दे के
: मुझे नहीं पता एक सर्वर करना चाहते हैं। Global.asax से ट्रांसफर करें .. मुझे नहीं पता। मेरे लिए बेकार लग रहा है। केवल रिमोट करने के लिए customErrors बदलने में सक्षम होना चाहते हैं। इसलिए कहीं भी अंतिम अपवाद को सहेजना है, लेकिन सत्र नहीं हो सकता है, इसलिए कैश में सहेजें लेकिन कुछ अतिरिक्त डेटा (समय और सत्र आईडी) के साथ कैश वैश्विक है और यह सुनिश्चित करना चाहता है कि किसी को गलत त्रुटि न दिखाई दे।
मैंने कुछ हद तक अपना कोड बदल दिया। अब यह सिर्फ है:
void Application_Error(object sender, EventArgs e)
{
HttpContext.Current.Cache["LastError"] = Server.GetLastError().GetBaseException();
Server.ClearError();
}
... और ...
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
if (HttpContext.Current.Cache["LastError"] != null)
{
Exception ex = (Exception)HttpContext.Current.Cache["LastError"];
if (ex != null)
Label1.Text = ex.Message;
}
}
नोट एक महत्वपूर्ण यह है कि पहले से ही है तो इस त्रुटि को मुझे एहसास बनाने का कारण होगा ex.Data.Add वहाँ नहीं करता है, तो अनाम उपयोगकर्ता, और sessionid ClearError
रिकॉर्ड के लिए, त्रुटियों पर रीडायरेक्ट करने वाले पेज वास्तव में परेशान हैं, क्योंकि वे आपको उस URL को भेजने के लिए अतिरिक्त कठिन बनाते हैं जिस पर मैंने त्रुटि देखी है, या बाद में पुनः प्रयास करें। –
इसके अतिरिक्त, एक सर्वर। ट्रांसफर कुछ आंशिक पृष्ठ पोस्टबैक के लिए काम नहीं करेगा - हम ऐसा कर रहे थे लेकिन जब यह UpdatePanel – cloying