/// <summary>
 /// Checks for authorization failure and if result of ajax call overrides asp.net redirect to return a 401.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="response">The response.</param>
 /// <param name="context">The context.</param>
 internal void CheckForAuthorizationFailure(HttpRequestBase request, HttpResponseBase response, HttpContextBase context)
 {
     if (!request.IsAjaxRequest() || !true.Equals(context.Items["RequestWasNotAuthorized"])) return;
     response.StatusCode = 401;
     response.ClearContent();
     var content = new {title = HttpContext.GetGlobalResourceObject("Session", "Title.SessionHasExpired"), content = HttpContext.GetGlobalResourceObject("Session", "Messsage.SessionHasExpired")};
     var serializer = new JavaScriptSerializer();
     response.Write(serializer.Serialize(content));
 }
 internal void CheckForAuthFailure(HttpRequestBase request, HttpResponseBase response, HttpContextBase context)
 {
     //NOTE: This will change *all* 302's for AJAX requests to 401s.  That could cause problems, but it will
     //		work for now.
     if (response.StatusCode == 302 && request.IsAjaxRequest())
     {
         response.StatusCode = 401;
         response.ClearContent();
     }
 }
Esempio n. 3
0
            /// <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
            }
Esempio n. 4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public static ActionResultType GetActionResultTypeByRequest(HttpRequestBase request)
 {
     string resulttype = request["resulttype"] ?? string.Empty;
     if (request.IsAjaxRequest() || string.Equals(resulttype, ActionResultType.Json.ToString(), StringComparison.OrdinalIgnoreCase))
         return ActionResultType.Json;
     else
         return ActionResultType.Normal;
 }
 private bool WriteJsonResponse(HttpRequestBase request, HttpResponseBase response, string json)
 {
     if (request.IsAjaxRequest())
     {
         response.Status = Constants.HttpSuccess;
         response.ContentType = Constants.JsonContentType;
         response.Write(json);
         return true;
     }
     return false;
 }