2013-02-11 16 views
10

में काम नहीं कर रहा है मैंने सभी अनचाहे अपवादों के लिए एक सामान्य संदेश दिखाने के लिए एक त्रुटि पृष्ठ बनाया है।Response.Redirect Global.asax

यह Global.asax

HttpContext ctx = HttpContext.Current; 

      string e404_PAGE = ctx.Request.AppRelativeCurrentExecutionFilePath.ToString(); 
      string e404_LINE = ctx.Server.GetLastError().InnerException.StackTrace.Substring(ctx.Server.GetLastError().InnerException.StackTrace.LastIndexOf(":line ") + 6, ctx.Server.GetLastError().InnerException.StackTrace.Substring(ctx.Server.GetLastError().InnerException.StackTrace.LastIndexOf(":line ") + 6).IndexOf(" ")).ToString(); 
      string e404_MESSAGE = ctx.Server.GetLastError().InnerException.Message.ToString(); 
      string e404_METHODNAME = ctx.Server.GetLastError().InnerException.TargetSite.ToString(); 
      string e404_STACKTRACE = ctx.Server.GetLastError().InnerException.StackTrace.ToString(); 
      string e404_URL = ctx.Request.Url.ToString(); 
      string e404_DATE = ctx.Timestamp.ToString("yyyy-MM-dd HH:mm:ss"); 
      string e404_USER = ctx.User.Identity.Name.ToString(); 
      string e404_IP = ctx.Request.UserHostAddress.ToString(); 

      // * * * // 

      System.Data.SqlClient.SqlConnection sql_conn; 
      sql_conn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ToString()); 
      sql_conn.Open(); 
      string query = @"insert into UnhandledExceptions(Message, Page, Line, MethodName, StackTrace, URL, Date, [User], IP) 
             values(@Message, @Page, @Line, @MethodName, @StackTrace, @URL, @Date, @User, @IP) 
             select scope_identity();"; 
      System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(query, sql_conn); 
      com.Parameters.AddWithValue("@Message", e404_MESSAGE); 
      com.Parameters.AddWithValue("@Page", e404_PAGE); 
      com.Parameters.AddWithValue("@Line", e404_LINE); 
      com.Parameters.AddWithValue("@MethodName", e404_METHODNAME); 
      com.Parameters.AddWithValue("@StackTrace", e404_STACKTRACE); 
      com.Parameters.AddWithValue("@URL", e404_URL); 
      com.Parameters.AddWithValue("@Date", e404_DATE); 
      com.Parameters.AddWithValue("@User", e404_USER); 
      com.Parameters.AddWithValue("@IP", e404_IP); 

      string e404_ID = com.ExecuteScalar().ToString(); 

      sql_conn.Close(); 

      // * * * //    

      Session["e404_ID"] = e404_ID; 
      Response.Redirect("~/Error.aspx"); 

में कोड जब मैं वेबसाइट प्रकाशित करते हैं, उपयोगकर्ता त्रुटि पृष्ठ पर पुनः निर्देशित नहीं किया जा रहा है।

अंतिम कोड ठीक होने तक सभी कोड ठीक काम करता है। कोई उपाय?

+0

जहां इस कोड है? –

+0

@LuisTellez कोड के अंदर है एप्लिकेशन_इरर –

+1

बस स्पष्ट बताते हुए: आपने कहा है कि 'Response.Redirect' काम नहीं करता है .. और फिर भी आप' सर्वर। ट्रांसफर 'का उपयोग करते हैं। इसके अलावा, क्या आपने इसके बजाय प्रत्यक्ष यूआरएल की कोशिश की है? (tilde के बिना) –

उत्तर

25

साथ Response.Redirect("~/Error.aspx"); बदलें: अपने Global.asax में

// You've handled the error, so clear it. Leaving the server in an error state can cause unintended side effects as the server continues its attempts to handle the error. 
Server.ClearError(); 

// Possible that a partially rendered page has already been written to response buffer before encountering error, so clear it. 
Response.Clear(); 

// Finally redirect, transfer, or render a error view 
Response.Redirect("~/Error.aspx"); 
+0

बहुत बहुत धन्यवाद, एक आकर्षण की तरह काम किया !! –

+0

समाधान और स्पष्टीकरण के लिए धन्यवाद। – nunzabar

+3

अरे मैंने उपरोक्त कोड का उपयोग किया है लेकिन फिर भी यह त्रुटि प्रतिक्रिया इस संदर्भ में उपलब्ध नहीं है। – Rhushikesh

संबंधित मुद्दे