Example #1
0
        /// <summary>
        /// If there is error, converts its details to JSOnDataMap
        /// </summary>
        public static NFX.Serialization.JSON.JSONDataMap ToJSONDataMap(this Exception error, bool recurse = true, bool stackTrace = false)
        {
            if (error == null)
            {
                return(null);
            }
            var result = new NFX.Serialization.JSON.JSONDataMap(false);

            result["Type"] = error.GetType().FullName;
            result["Msg"]  = error.Message;
            result["Data"] = error.Data;
            result["Src"]  = error.Source;
            if (stackTrace)
            {
                result["STrace"] = error.StackTrace;
            }

            if (recurse)
            {
                result["Inner"] = error.InnerException.ToJSONDataMap(recurse);
            }
            else
            {
                result["Inner.Type"] = error.InnerException != null?error.InnerException.GetType().FullName : null;

                result["Inner.Msg"] = error.InnerException != null ? error.InnerException.Message : null;
                if (stackTrace)
                {
                    result["Inner.STrace"] = error.InnerException != null ? error.InnerException.StackTrace : null;
                }
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Describes exception for client response transmission as JSONDataMap
        /// </summary>
        public static NFX.Serialization.JSON.JSONDataMap ToClientResponseJSONMap(this Exception error, bool detailed)
        {
            var actual = error;

            if (actual is FilterPipelineException)
            {
                actual = ((FilterPipelineException)actual).RootException;
            }

            var result = new NFX.Serialization.JSON.JSONDataMap();

            result["OK"]                    = false;
            result["HttpStatusCode"]        = (actual is HTTPStatusException) ? ((HTTPStatusException)actual).StatusCode : -1;
            result["HttpStatusDescription"] = (actual is HTTPStatusException) ? ((HTTPStatusException)actual).StatusDescription : string.Empty;

            if (detailed)
            {
                result["Error"]      = error.Message;
                result["Type"]       = error.GetType().FullName;
                result["StackTrace"] = error.StackTrace;
                if (error.InnerException != null)
                {
                    result["Inner"] = error.InnerException.ToClientResponseJSONMap(detailed);
                }
            }
            else
            {
                result["Error"] = actual.GetType().Name;
            }

            result["IsAuthorization"] = actual is NFX.Security.AuthorizationException || actual.InnerException is NFX.Security.AuthorizationException;

            return(result);
        }
Example #3
0
        /// <summary>
        /// Describes exception for client response transmission as JSONDataMap
        /// </summary>
        public static NFX.Serialization.JSON.JSONDataMap ToClientResponseJSONMap(this Exception error, bool detailed)
        {
            var actual = error;
               if (actual is FilterPipelineException)
             actual = ((FilterPipelineException)actual).RootException;

            var result = new NFX.Serialization.JSON.JSONDataMap();
            result["OK"] = false;
            result["HttpStatusCode"] = (actual is HTTPStatusException) ? ((HTTPStatusException)actual).StatusCode : -1;
            result["HttpStatusDescription"] = (actual is HTTPStatusException) ? ((HTTPStatusException)actual).StatusDescription : string.Empty;

            if (detailed)
            {
              result["Error"] = error.Message;
              result["Type"] = error.GetType().FullName;
              result["StackTrace"] = error.StackTrace;
              if (error.InnerException!=null)
            result["Inner"] = error.InnerException.ToClientResponseJSONMap(detailed);
            }
            else
            {
              result["Error"] = actual.GetType().Name;
            }

            result["IsAuthorization"] = actual is NFX.Security.AuthorizationException || actual.InnerException is NFX.Security.AuthorizationException;

               return result;
        }