Пример #1
0
        /// <summary>
        /// Format exception to string.
        /// </summary>
        /// <param name="ex">Exception which should be converted to string.</param>
        /// <returns>String that represent exception information.</returns>
        public static string FormatException(DbEntityValidationException ex)
        {
            if (ex == null)
            {
                throw new ArgumentNullException("ex");
            }

            var           newline          = Environment.NewLine;
            StringBuilder validationErrors = new StringBuilder();

            foreach (var entityValidationError in ex.EntityValidationErrors)
            {
                foreach (var validationError in entityValidationError.ValidationErrors)
                {
                    var validationErrorDescription = string.Format("Property {0}. Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                    validationErrors.AppendLine(validationErrorDescription);
                }
            }

            var message = ex.Message + newline
                          + "Validation errors: " + validationErrors.ToString() + newline
                          + "Exception type: " + ex.GetType().FullName + newline
                          + ex.StackTrace + newline
                          + newline;

            if (ex.InnerException != null)
            {
                message += "-----------------------------------------------------------" + newline
                           + newline
                           + "Inner exception: " + newline
                           + FormatException(ex.InnerException);
            }

            return(message);
        }
Пример #2
0
 private static string GetMessageFor(DbEntityValidationException exception)
 {
     return(string.Format("'{0}' -  '{2}'{1}  EntityValidationErrors{1}{3}{1}  InnerExceptions{1}{4}{1}  StackTrace{1}{5}",
                          exception.GetType().Name,
                          Environment.NewLine,
                          exception.Message,
                          GetEntityValidationErrors(exception),
                          GetInnerExceptionsMessage(exception),
                          exception.StackTrace));
 }
Пример #3
0
        private static string GetMessage(DbEntityValidationException ex)
        {
            var errors = new StringBuilder();

            errors.AppendLine();
#if DEBUG
            errors.AppendLine($"[{ex.GetType().Name}]");
#endif
            foreach (var error in ex.EntityValidationErrors)
            {
                var entity = error.Entry.Entity;
                if (entity == null)
                {
                    continue;
                }
                var entityName = GetEntityName(entity);
                errors.AppendLine($"{entityName}:");
                errors.AppendLine();
                foreach (var validation in error.ValidationErrors)
                {
                    var propertyName     = validation.PropertyName;
                    var entityType       = error.Entry.Entity.GetType();
                    var propInfo         = entityType.GetProperty(propertyName);
                    var attributes       = propInfo?.GetCustomAttributes(typeof(DisplayAttribute), false);
                    var displayAttribute = attributes?.Length > 0 ? attributes[0] as DisplayAttribute : null;
                    propertyName = displayAttribute?.Name ?? propertyName;
                    if (displayAttribute?.ResourceType != null)
                    {
                        var resourceManager = new ResourceManager(displayAttribute.ResourceType);
                        propertyName = resourceManager.GetString(propertyName) ?? propertyName;
                    }
                    errors.AppendLine($"{propertyName}: {validation.ErrorMessage}");
                }
            }
            return(errors.ToString());
        }
        public static void SendErrorToText(DbEntityValidationException ex)
        {
            var line = Environment.NewLine + Environment.NewLine;

            ErrorlineNo   = ex.StackTrace.Substring(ex.StackTrace.Length - 7, 7);
            Errormsg      = ex.GetType().Name.ToString();
            extype        = ex.GetType().ToString();
            exurl         = context.Current.Request.Url.ToString();
            ErrorLocation = ex.Message.ToString();
            hostIp        = context.Current.Request.UserHostAddress;
            try
            {
                //Text File Path
                string filepath = context.Current.Server.MapPath("~/AuditFiles/");

                if (!Directory.Exists(filepath))
                {
                    Directory.CreateDirectory(filepath);
                }

                var date = DateTime.Now; // Text File Name
                filepath += $"DbEntity {DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss").Replace(':', '-')}.txt";

                if (!File.Exists(filepath))
                {
                    File.Create(filepath).Dispose();
                }

                using (StreamWriter sw = File.AppendText(filepath))
                {
                    sw.WriteLine("                  Exception Details on: " + DateTime.Now.ToString() + "");
                    sw.WriteLine("-----------------------------------------------------------------------------------");
                    sw.WriteLine();
                    sw.WriteLine("Error Line No   : " + ErrorlineNo);
                    sw.WriteLine("Error Message   : " + Errormsg);
                    sw.WriteLine("Exception Type  : " + extype);
                    sw.WriteLine("Error Location  : " + ErrorLocation);
                    sw.WriteLine("Error Page Url  : " + exurl);
                    sw.WriteLine("User Host IP    : " + hostIp);
                    sw.WriteLine();
                    sw.WriteLine("--------------------------------*Details*------------------------------------------");
                    sw.WriteLine();
                    foreach (var eve in ex.EntityValidationErrors)
                    {
                        var entity_type = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        sw.WriteLine(entity_type);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            sw.WriteLine(string.Format("- Property: \"{0}\"", ve.PropertyName));
                            sw.WriteLine(string.Format("- Error: \"{0}\"", ve.ErrorMessage));
                        }
                        var entry = eve.Entry;
                        // Rollback changes
                        switch (entry.State)
                        {
                        case EntityState.Added:
                            entry.State = EntityState.Detached;
                            break;

                        case EntityState.Modified:
                            entry.CurrentValues.SetValues(entry.OriginalValues);
                            entry.State = EntityState.Unchanged;
                            break;

                        case EntityState.Deleted:
                            entry.State = EntityState.Unchanged;
                            break;
                        }
                    }
                    sw.WriteLine();
                    sw.WriteLine("--------------------------------*End exception*------------------------------------");
                    sw.Flush();
                    sw.Close();
                }
            }
            catch (Exception e)
            {
                e.ToString();
            }
        }