if (!ModelState.IsValid) { var sb = new System.Text.StringBuilder(); Dictionary> errorList = ModelState.ToDictionary( kvp => kvp.Key, kvp => kvp.Value.Errors.Select(e => e.Exception) ); sb.AppendLine("Exceptions:"); foreach (string key in errorList.Keys) { foreach (Exception ex in errorList[key]) { if (ex != null) { sb.AppendFormat("{0}: {1} - [{3}]{2}", key, ex.Message, Environment.NewLine, ex.StackTrace); } } } sb.AppendLine("Validation:"); Dictionary> errorMessages = ModelState.ToDictionary( kvp => kvp.Key, kvp => kvp.Value.Errors.Select(e => e.ErrorMessage) ); foreach (string key in errorMessages.Keys) { foreach (string message in errorMessages[key]) { sb.AppendFormat("{0}: {1}{2}", key, message, Environment.NewLine); } } throw new Exception(sb.ToString()); }