Ejemplo n.º 1
0
        protected static void HandleException(HttpActionExecutedContext filterContext)
        {
            if (filterContext.Exception == null)
            {
                return;
            }
            var actionDescriptor = filterContext.ActionContext.ActionDescriptor;

            LogManager.GetLogger(actionDescriptor.ControllerDescriptor.ControllerType)
            .Error(filterContext.Exception);
            try
            {
                var friendlyMessageHandler = new zAppDev.DotNet.Framework.Utilities.ExceptionHandler();
                var msgObject = friendlyMessageHandler.HandleException(filterContext.Exception);

                if (HttpContext.Current?.IsDebuggingEnabled == false)
                {
                    msgObject.OriginalStackTrace = null;
                    msgObject.Entries            = null;
                }

                filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.InternalServerError, msgObject);
            }
            catch (Exception e)
            {
                LogManager.GetLogger(actionDescriptor.ControllerDescriptor.ControllerType)
                .Error("Could not produce friendly message for exception!", e);
                filterContext.Response = filterContext.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, filterContext.Exception);
            }
        }
        private static ActionResult GetErrorResult(ActionExecutedContext filterContext, string actionName,
                                                   string formName)
        {
            string errorContent;

            try
            {
                filterContext.HttpContext.Response.Clear();
                filterContext.HttpContext.Response.StatusCode             = 500;
                filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
                var friendlyMessageHandler = new zAppDev.DotNet.Framework.Utilities.ExceptionHandler();
                var msgObject = friendlyMessageHandler.HandleException(filterContext.Exception);
                errorContent = Newtonsoft.Json.JsonConvert.SerializeObject(msgObject,
                                                                           new Newtonsoft.Json.JsonSerializerSettings
                {
                    PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects
                });
            }
            catch (Exception e)
            {
                LogManager.GetLogger(typeof(zAppDev.DotNet.Framework.Utilities.ExceptionHandler))
                .Error("Could not produce friendly message for exception!", e);
                errorContent = filterContext.Exception.Message;
            }
            var controller = ((CustomControllerBase)filterContext.Controller);

            if (controller.Request.IsAjaxRequest())
            {
                return(new JsonResult
                {
                    Data = new
                    {
                        Type = "Error",
                        Data = errorContent, filterContext.Exception.StackTrace,
                        RedirectURL = $"{formName}/{actionName}"
                    },
                    MaxJsonLength = int.MaxValue,
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });
            }
            return(new RedirectToRouteResult(new RouteValueDictionary
            {
                ["action"] = actionName,
                ["controller"] = formName
            }));
        }