2013-03-28 4 views
1

Я хочу перенаправить на страницу с ошибкой, когда приложение выдает исключение, но оно не перенаправляется на эту страницу. Вот мой код:Response.Redirect не работает в Global.asax

protected void Application_Error(object sender, EventArgs e) 
    { 

     StringBuilder theBody = new StringBuilder(); 

     Exception exception = Server.GetLastError(); 

     StackTrace st = new StackTrace(exception, true); 
     // Get the top stack frame 
     StackFrame frame = st.GetFrame(0); 
     // Get the line number from the stack frame 
     int line = frame.GetFileLineNumber(); 

     string file = frame.GetFileName(); 

     MethodBase site = exception.TargetSite; 
     string methodName = site == null ? null : site.Name; 

     string type = exception.GetType().ToString(); 

     theBody.Append("Line: " + line + "<br/>"); 
     theBody.Append("Method: " + methodName + "<br/>"); 
     theBody.Append("File: " + methodName + "<br/>"); 
     theBody.Append("IP: " + Request.ServerVariables["REMOTE_HOST"] + "<br/>"); 
     theBody.Append("Error Message: " + exception.Message + "<br/>"); 
     theBody.Append("Error Stack:" + exception.StackTrace); 

      Response.Redirect("~/404.aspx", false); 
      Context.ApplicationInstance.CompleteRequest(); 


     ... 
    } 

И я стараюсь это как это на тестовой странице

try 
     { 

      throw new Exception("Test exception!!"); 
     } 
     catch (Exception) 
     { 


     } 

Это doen't перенаправлять 404.aspx держать пребывания на тестовой странице. Что делать, чтобы перенаправить 404.aspx?

+4

Почему вы не использовать функциональные возможности ошибок страницы по умолчанию для ASP.NET? http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/displaying-a-custom-error-page-cs –

+0

Также - почему вы готовите сообщение электронной почты, которое вы никогда не отправляете ? –

+0

@Hainesy Я не показывал, так как вы видите «...» есть код отправки электронной почты. Но спасибо за предложение. Я просто нарушаю свой код перенаправления, чтобы показать здесь людей. – cagin

ответ

1

установить его в web.config, как описано в этой ссылке http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/displaying-a-custom-error-page-cs

<system.web> 
     <customErrors mode="On" 
         defaultRedirect="~/ErrorPages/Oops.aspx" /> 

     ... 
    </system.web> 
+0

Я сделал это один , но тот же результат. TestPage не перенаправляет. – cagin

+0

удалите блок try & catch .. просто добавьте throw new Exception («Исключение теста !!»); и он будет перенаправлен на 404.aspx. Поскольку, когда вы добавляете какое-либо исключение в блок try и catch, вы будете на одной странице, но если вы удалите блок try & catch, он перейдет в функцию ApplicationError в Global.asax затем на страницу перенаправления по умолчанию, которая была установлена ​​на web.config .. Надеюсь, это поможет вам –

+0

Да, я удаляю блок catch try и запускаю его. Но нужно ли мне удалить весь мой блок try-catch в моем веб-проекте? Если да, безопасно ли это? – cagin

Смежные вопросы