Exemple #1
0
        public static ErrorFormatter CreateDefault()
        {
            var f = new ErrorFormatter();

            f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e));
            f.Formatters.Add((e, o) => new ExceptionSectionFormatter {
                Exception = f.LoadException(e)
            });
            f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies));
            f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers));
            f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo
            {
                Title   = "Loader Exceptions",
                Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(),
                Display = ExceptionAdditionalInfo.DisplayMode.ToString
            });
            f.AddInfoLoader <DotvvmCompilationException>(e =>
            {
                var info = new ExceptionAdditionalInfo()
                {
                    Title   = "DotVVM Compiler",
                    Objects = null,
                    Display = ExceptionAdditionalInfo.DisplayMode.ToString
                };
                if (e.Tokens != null && e.Tokens.Any())
                {
                    info.Objects = new object[]
                    {
                        $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}"
                    };
                }
                return(info);
            });

            f.AddInfoCollectionLoader <InvalidCommandInvocationException>(e =>
            {
                if (e.AdditionData == null || !e.AdditionData.Any())
                {
                    return(null);
                }
                var infos = new List <ExceptionAdditionalInfo>();
                foreach (var data in e.AdditionData)
                {
                    infos.Add(new ExceptionAdditionalInfo()
                    {
                        Title   = data.Key,
                        Objects = data.Value,
                        Display = ExceptionAdditionalInfo.DisplayMode.ToHtmlList
                    });
                }
                return(infos);
            });

            return(f);
        }
 public virtual SourceModel ExtractSource(Exception exc)
 {
     if (exc is DotvvmCompilationException)
     {
         var compilationException = (DotvvmCompilationException)exc;
         if (compilationException.Tokens != null && compilationException.Tokens.Any())
         {
             var errorColumn = compilationException.Tokens.First().ColumnNumber;
             var errorLength = compilationException.Tokens.Where(t => t.LineNumber == compilationException.LineNumber).Sum(t => t.Length);
             if (compilationException.FileName != null)
             {
                 return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0,
                                                       errorColumn: errorColumn,
                                                       errorLength: errorLength));
             }
             else
             {
                 var line = string.Concat(compilationException.Tokens.Select(s => s.Text));
                 return(CreateAnonymousLine(line, lineNumber: compilationException.Tokens.First().LineNumber));
             }
         }
         else if (compilationException.FileName != null)
         {
             return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: compilationException.ColumnNumber ?? 0, errorLength: compilationException.ColumnNumber != null ? 1 : 0));
         }
     }
     else if (exc is BindingCompilationException)
     {
         var bce = (BindingCompilationException)exc;
         if (bce.Expression != null)
         {
             var first = bce.Tokens.First().StartPosition;
             return(CreateAnonymousLine(bce.Expression, first, bce.Tokens.Last().StartPosition + bce.Tokens.Last().Length - first));
         }
         else if (bce.Tokens != null)
         {
             return(CreateAnonymousLine(string.Concat(bce.Tokens.Select(t => t.Text))));
         }
     }
     else if (exc is DotvvmControlException)
     {
         var controlException = (DotvvmControlException)exc;
         return(ErrorFormatter.LoadSourcePiece(controlException.FileName, controlException.LineNumber ?? 0));
     }
     return(null);
 }
Exemple #3
0
        public static ErrorFormatter CreateDefault()
        {
            var f = new ErrorFormatter();

            f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e));
            f.Formatters.Add((e, o) => new ExceptionSectionFormatter {
                Exception = f.LoadException(e)
            });
            f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies));
            f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers));
            f.Formatters.Add((e, o) => DictionarySection.Create("Environment", "env", o.Environment));
            f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo
            {
                Title   = "Loader Exceptions",
                Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(),
                Display = ExceptionAdditionalInfo.DisplayMode.ToString
            });
            f.AddInfoLoader <DotvvmCompilationException>(e =>
            {
                var info = new ExceptionAdditionalInfo()
                {
                    Title   = "DotVVM Compiler",
                    Objects = null,
                    Display = ExceptionAdditionalInfo.DisplayMode.ToString
                };
                if (e.Tokens != null && e.Tokens.Any())
                {
                    info.Objects = new object[]
                    {
                        $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}"
                    };
                }
                return(info);
            });

            return(f);
        }
Exemple #4
0
 private SourceModel ExtractSourceFromDotvvmCompilationException(DotvvmCompilationException compilationException)
 {
     if (compilationException.Tokens != null && compilationException.Tokens.Any())
     {
         var errorColumn = compilationException.Tokens.FirstOrDefault()?.ColumnNumber ?? 0;
         var errorLength = compilationException.Tokens.Where(t => t.LineNumber == compilationException.LineNumber).Sum(t => t.Length);
         if (compilationException.FileName != null)
         {
             return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0,
                                                   errorColumn: errorColumn,
                                                   errorLength: errorLength));
         }
         else
         {
             var line = string.Concat(compilationException.Tokens.Select(s => s.Text));
             return(CreateAnonymousLine(line, lineNumber: compilationException.Tokens.FirstOrDefault()?.LineNumber ?? 0));
         }
     }
     else if (compilationException.FileName != null)
     {
         return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: compilationException.ColumnNumber ?? 0, errorLength: compilationException.ColumnNumber != null ? 1 : 0));
     }
     return(null);
 }
Exemple #5
0
        public static ErrorFormatter CreateDefault()
        {
            var f = new ErrorFormatter();

            f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e));
            f.Formatters.Add((e, o) => new ExceptionSectionFormatter(f.LoadException(e), "Raw Stack Trace", "raw_stack_trace"));
            f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies));
            f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers));
            f.Formatters.Add((e, o) => {
                var b = e.AllInnerExceptions().OfType <BindingPropertyException>().Select(a => a.Binding).OfType <ICloneableBinding>().FirstOrDefault();
                if (b == null)
                {
                    return(null);
                }
                return(DictionarySection.Create("Binding", "binding",
                                                new [] { new KeyValuePair <object, object>("Type", b.GetType().FullName) }
                                                .Concat(
                                                    b.GetAllComputedProperties()
                                                    .Select(a => StripBindingProperty(a.GetType().Name, a))
                                                    .Select(a => new KeyValuePair <object, object>(a.name, a.value))
                                                    ).ToArray()));
            });
            f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo {
                Title   = "Loader Exceptions",
                Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(),
                Display = ExceptionAdditionalInfo.DisplayMode.ToString
            });
            f.AddInfoLoader <DotvvmCompilationException>(e => {
                var info = new ExceptionAdditionalInfo()
                {
                    Title   = "DotVVM Compiler",
                    Objects = null,
                    Display = ExceptionAdditionalInfo.DisplayMode.ToString
                };
                if (e.Tokens != null && e.Tokens.Any())
                {
                    info.Objects = new object[]
                    {
                        $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}"
                    };
                }
                return(info);
            });

            f.AddInfoCollectionLoader <InvalidCommandInvocationException>(e => {
                if (e.AdditionData == null || !e.AdditionData.Any())
                {
                    return(null);
                }
                var infos = new List <ExceptionAdditionalInfo>();
                foreach (var data in e.AdditionData)
                {
                    infos.Add(new ExceptionAdditionalInfo()
                    {
                        Title   = data.Key,
                        Objects = data.Value,
                        Display = ExceptionAdditionalInfo.DisplayMode.ToHtmlList
                    });
                }
                return(infos);
            });

            return(f);
        }
Exemple #6
0
 private SourceModel ExtractSourceFromDotvvmControlException(DotvvmControlException controlException)
 {
     return(ErrorFormatter.LoadSourcePiece(controlException.FileName, controlException.LineNumber ?? 0));
 }