public override void OnException(ExceptionContext filterContext)
        {
            var response = filterContext.HttpContext.Response;

            // in allow debug mode just show standard ASP.NET error
            if (ShowErrorPageInDebugMode && filterContext.HttpContext.IsDebuggingEnabled)
            {
                base.OnException(filterContext);
                return;
            }

            var ex = filterContext.Exception.GetBaseException();

            CallbackErrorResponseMessage resultMessage = new CallbackErrorResponseMessage(ex, AllowExceptionDetail);

            response.ContentType = "application/json";
            response.StatusCode  = 500;
            var cbEx = ex as CallbackException;

            if (cbEx != null && cbEx.StatusCode > 0)
            {
                response.StatusCode = ((CallbackException)ex).StatusCode;
            }

            response.Write(JsonConvert.SerializeObject(resultMessage));

            filterContext.ExceptionHandled  = true;
            response.TrySkipIisCustomErrors = true;
        }
        /// <summary>
        /// Returns a JSON error response to the client
        /// </summary>
        /// <param name="ex">Exception that generates the error message and info to return</param>
        /// <param name="statusCode">Optional status code</param>
        /// <returns></returns>
        public JsonResult ReturnAjaxError(Exception ex, int statusCode = 500)
        {
            Response.Clear();
            Response.StatusCode = statusCode;
            var cb = new CallbackErrorResponseMessage(ex, HttpContext.IsDebuggingEnabled);

            return(Json(cb, JsonRequestBehavior.AllowGet));
        }