/// <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); }
/// <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); }
/// <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; }