Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Как из global.asax передать Exception


Автор: ru_efim 6.8.2009, 10:39
Здравствуйте. 
Имею код в global.asax.cs: 
protected void Application_Error(Object sender, EventArgs e) 
{ 
   try
   { 
      Exception lastError = Server.GetLastError(); 
      if (lastError != null) 
      { 
         //Записываем непосредственно исключение, вызвавшее данное, в 
         //Session для дальнейшего использования 
         Session["ErrorException"] = lastError.InnerException; 
      } 
   } 
   catch (Exception) 
   { 
      Response.Write("К сожалению произошла критическая ошибка. Нажмите кнопку ?Назад? в браузере и попробуйте ещё раз."); 
   } 
} 

в error.aspx.cs: 
private void Page_Load(object sender, System.EventArgs e) 
{ 
   try 
   { 
      // возьмем информацию об исключении из сессии 
      Exception exc=(Exception)Session["ErrorException"]; 
      ... 
   } 
} 
web.config: 
<customErrors mode="On" defaultRedirect="Problems.aspx"></customErrors>
Многие так советуют, и у меня все работает правильно. Если происходит ошибка выполняется метод protected void Application_Error(Object sender, EventArgs e) и в переменной Session["ErrorException"] с помощью lastError.InnerException сохраняется именно то что и необходимо, происходит перенаправление на старницу error.aspx, но по какой-то причине метод 
(Exception)Session["ErrorException"] всегда возвращает null. Что я не учел? Как передать объект Expection в error.aspx.

Автор: Bestoloch 6.8.2009, 14:05
Попробуйте использовать
Код

// Get the last error from the server
Exception ex = Server.GetLastError();

Автор: ru_efim 7.8.2009, 08:21
Дак я так ведь и делаю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)