/// <summary> /// Envia email de erro para o desenvolvedor e grava no banco /// </summary> /// <param name="ex"></param> /// <param name="Request"></param> /// <returns></returns> public static void TrataErro(Exception ex, HttpRequestBase Request, bool enviarEmail) { #region Envia Email String mensagem = ""; int cont = 1; while (ex != null) { mensagem += "<fieldset>"; mensagem += "<p><strong>Erro:</strong></p>"; mensagem += "<p>" + ex.Message + "</p>"; mensagem += "<p><strong>Stack Trace:</strong></p>"; mensagem += "<p>" + ex.StackTrace.Nl2br() + "</p>"; String method = ""; if (ex.TargetSite != null) { method = ex.TargetSite.Name; } mensagem += "<p><strong>Method:</strong></p>"; mensagem += "<p>" + method + "</p>"; mensagem += "<p><strong>Source:</strong></p>"; mensagem += "<p>" + ex.Source + "</p>"; ex = ex.InnerException; cont++; } for (int i = 1; i <= cont; i++) { mensagem += "</fieldset>"; } String urlreferrer = ""; if (HttpContext.Current.Request.UrlReferrer != null) { urlreferrer = HttpContext.Current.Request.UrlReferrer.ToString(); } else { urlreferrer = " - "; } String infoUsuario = ""; #region Informações do Usuário try { if (Sessao.Site.UsuarioLogado()) { UsuarioInfo usuario = Sessao.Site.UsuarioInfo; infoUsuario += "<p><strong>Id:</strong>"; infoUsuario += usuario.Id.ToString(); infoUsuario += "<br><strong>Nome:</strong>"; infoUsuario += usuario.Nome.ToString(); infoUsuario += "</p>"; } else { infoUsuario = "<font color='blue'>Usuário não logado</font>"; } } catch (Exception e) { infoUsuario += "<p><font color='red'>Ocorreu um erro ao tentar recuperar as informações do usuário.</font></p>"; infoUsuario += "<fieldset><legend>Detalhes do Erro</legend>"; cont = 1; while (e != null) { infoUsuario += "<fieldset><p><strong>Erro:</strong></p>"; infoUsuario += "<p>" + e.Message + "</p>"; infoUsuario += "<p><strong>Stack Trace:</strong></p>"; infoUsuario += "<p>" + e.StackTrace + "</p>"; String method = ""; if (e.TargetSite != null) { infoUsuario += e.TargetSite.Name; } infoUsuario += "<p><strong>Method:</strong></p>"; infoUsuario += "<p>" + method + "</p>"; infoUsuario += "<p><strong>Source:</strong></p>"; infoUsuario += "<p>" + e.Source + "</p>"; e = e.InnerException; cont++; } for (int i = 1; i <= cont; i++) { mensagem += "</fieldset>"; } infoUsuario += "</fieldset>"; } #endregion String gravouErro = ""; #region Gravar Erro no Banco ErroRepository erroRepository = null; Erro erro = null; try { erroRepository = new ErroRepository(); erro = new Erro(); erro.Pagina = HttpContext.Current.Request.Url.ToString(); erro.PaginaAnterior = urlreferrer.ToString(); erro.RequestHost = HttpContext.Current.Request.UserHostAddress.ToString(); erro.HostName = HttpContext.Current.Request.UserHostName.ToString(); erro.UserAgent = HttpContext.Current.Request.UserAgent.ToString(); erro.InfoUsuario = infoUsuario.ToString(); erro.ErroMsg = mensagem.ToString(); erroRepository.Add(erro); erroRepository.Save(); gravouErro = "<font color='blue'>Sim (Erro #" + erro.Id + ")</font>"; } catch (Exception e) { gravouErro = "<p><font color='red'>Ocorreu um erro ao tentar gravar o erro no banco.</font></p>"; gravouErro = "<fieldset><legend>Detalhes do Erro</legend>"; cont = 1; while (e != null) { gravouErro += "<fieldset><p><strong>Erro:</strong></p>"; gravouErro += "<p>" + e.Message + "</p>"; gravouErro += "<p><strong>Stack Trace:</strong></p>"; gravouErro += "<p>" + e.StackTrace + "</p>"; String method = ""; if (e.TargetSite != null) { gravouErro = e.TargetSite.Name; } gravouErro += "<p><strong>Method:</strong></p>"; gravouErro += "<p>" + method + "</p>"; gravouErro += "<p><strong>Source:</strong></p>"; gravouErro += "<p>" + e.Source + "</p>"; e = e.InnerException; cont++; } for (int i = 1; i <= cont; i++) { mensagem += "</fieldset>"; } gravouErro = "</fieldset>"; } #endregion if (enviarEmail) { String body = Util.Email.GetCorpoEmail("erro"); body = body .Replace("[data]", Util.Data.Formata(DateTime.Now, Util.Data.FormatoData.Completo)) .Replace("[pagina]", HttpContext.Current.Request.Url.ToString()) .Replace("[pagina_anterior]", urlreferrer) .Replace("[request_host]", HttpContext.Current.Request.UserHostAddress.ToString()) .Replace("[host_name]", HttpContext.Current.Request.UserHostName.ToString()) .Replace("[user_agent]", HttpContext.Current.Request.UserAgent.ToString()) .Replace("[requisicao_ajax]", (Request != null) ? (Request.IsAjaxRequest()) ? "Sim" : "Não" : " - ") .Replace("[info_usuario]", infoUsuario) .Replace("[gravou_erro]", gravouErro) .Replace("[erro_msg]", mensagem); try { Util.Email.Enviar(Util.Email.EmailEnvioPadrao, Util.Email.EmailDesenvolvedor, body, "Ocorreu algum erro"); if (erro != null) { erro.EnviouEmail = true; erroRepository.Save(); } } catch { if (erro != null) { erro.EnviouEmail = false; erroRepository.Save(); } } } else { erro.EnviouEmail = false; erroRepository.Save(); } #endregion }
public void Delete(Erro erro) { db.Erros.DeleteOnSubmit(erro); }
public void Add(Erro erro) { erro.DataInclusao = DateTime.Now; db.Erros.InsertOnSubmit(erro); }
partial void DeleteErro(Erro instance);
partial void UpdateErro(Erro instance);
partial void InsertErro(Erro instance);