Erro no glbal.asa.cs .Net C#
04/03/2010
0
Pessoal, eu fiz a rotina abaixo para recuperar um erro e depois mostrar para o usuário um página de erro que não seja a página amarela padão do .Net.
Minha pergunta é: Isso é gambiarra? Tem formas melhores de implentar isso?
sCaminhoErro = Server.MapPath(".") + @"\App_Data\LOG_ERROS.xml";
String sUrlOrigem = Request.Path.ToString().Replace("/",""); LogErroSistema oLog = new LogErroSistema(); Exception Ex = Server.GetLastError().InnerException;
oLog.DDataErro = DateTime.Now;
oLog.SErro = Ex.Message.ToString().Replace("\n", "--");
oLog.SIP = Request.UserHostAddress;
oLog.STrace = Server.GetLastError().StackTrace.ToString();
oLog.SUrl = Request.Url.ToString(); oLog.SalvarLog(sCaminhoErro); Email Email = new Email();
Email.EmailOrigem = ConfigurationManager.AppSettings["EmailOrigem"].ToString();
Email.EmailDestino = ConfigurationManager.AppSettings["EmailOrigem"].ToString();
Email.Host = ConfigurationManager.AppSettings["Host"].ToString();
Email.Assunto = "Erro na demonstração";
Email.EnviarEmailErro(oLog.SErro);
Response.Redirect("MostraErro.aspx?Erro=" + oLog.SErro + "&Url=" + sUrlOrigem); Reparem que nessa linha( oLog.SErro = Ex.Message.ToString().Replace("\n", "--");
) eu faço um replace para retirar a quebra de linha, pois na querystring não é aceito quebras. Na página MostraErro.aspx eu faço o replace inverso. A desvantagem disso é que se tiver "--" na mensgem de erro, vai quebrar a linha. Obrigado!!!
String sUrlOrigem = Request.Path.ToString().Replace("/",""); LogErroSistema oLog = new LogErroSistema(); Exception Ex = Server.GetLastError().InnerException;
oLog.DDataErro = DateTime.Now;
oLog.SErro = Ex.Message.ToString().Replace("\n", "--");
oLog.SIP = Request.UserHostAddress;
oLog.STrace = Server.GetLastError().StackTrace.ToString();
oLog.SUrl = Request.Url.ToString(); oLog.SalvarLog(sCaminhoErro); Email Email = new Email();
Email.EmailOrigem = ConfigurationManager.AppSettings["EmailOrigem"].ToString();
Email.EmailDestino = ConfigurationManager.AppSettings["EmailOrigem"].ToString();
Email.Host = ConfigurationManager.AppSettings["Host"].ToString();
Email.Assunto = "Erro na demonstração";
Email.EnviarEmailErro(oLog.SErro);
Response.Redirect("MostraErro.aspx?Erro=" + oLog.SErro + "&Url=" + sUrlOrigem); Reparem que nessa linha( oLog.SErro = Ex.Message.ToString().Replace("\n", "--");
) eu faço um replace para retirar a quebra de linha, pois na querystring não é aceito quebras. Na página MostraErro.aspx eu faço o replace inverso. A desvantagem disso é que se tiver "--" na mensgem de erro, vai quebrar a linha. Obrigado!!!
Fabio Colli
Curtir tópico
+ 0
Responder
Posts
05/03/2010
Marcio Silveira
Adicione a seguinte linha no seu web.config e assim sempre que der um erro não tratado o sistema irá chamar a página de erro indicada.
<customErrors mode="On" defaultRedirect="ERRO.aspx"/>
<customErrors mode="On" defaultRedirect="ERRO.aspx"/>
Responder
Clique aqui para fazer login e interagir na Comunidade :)