Use Microsoft.Extensions.StackTrace.Sources
This commit is contained in:
parent
0025724433
commit
b7c924b449
|
|
@ -4,8 +4,6 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -16,7 +14,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using StackFrame = Microsoft.AspNetCore.Diagnostics.Views.StackFrame;
|
using Microsoft.Extensions.StackTrace.Sources;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics
|
namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
|
|
@ -27,10 +25,9 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
private readonly RequestDelegate _next;
|
private readonly RequestDelegate _next;
|
||||||
private readonly DeveloperExceptionPageOptions _options;
|
private readonly DeveloperExceptionPageOptions _options;
|
||||||
private static readonly bool IsMono = Type.GetType("Mono.Runtime") != null;
|
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IFileProvider _fileProvider;
|
private readonly IFileProvider _fileProvider;
|
||||||
private readonly DiagnosticSource _diagnosticSource;
|
private readonly System.Diagnostics.DiagnosticSource _diagnosticSource;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="DeveloperExceptionPageMiddleware"/> class
|
/// Initializes a new instance of the <see cref="DeveloperExceptionPageMiddleware"/> class
|
||||||
|
|
@ -45,7 +42,7 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
IOptions<DeveloperExceptionPageOptions> options,
|
IOptions<DeveloperExceptionPageOptions> options,
|
||||||
ILoggerFactory loggerFactory,
|
ILoggerFactory loggerFactory,
|
||||||
IHostingEnvironment hostingEnvironment,
|
IHostingEnvironment hostingEnvironment,
|
||||||
DiagnosticSource diagnosticSource)
|
System.Diagnostics.DiagnosticSource diagnosticSource)
|
||||||
{
|
{
|
||||||
if (next == null)
|
if (next == null)
|
||||||
{
|
{
|
||||||
|
|
@ -122,7 +119,7 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
|
|
||||||
private Task DisplayCompilationException(
|
private Task DisplayCompilationException(
|
||||||
HttpContext context,
|
HttpContext context,
|
||||||
ICompilationException compilationException)
|
ICompilationException compilationException)
|
||||||
{
|
{
|
||||||
var model = new CompilationErrorPageModel
|
var model = new CompilationErrorPageModel
|
||||||
{
|
{
|
||||||
|
|
@ -187,75 +184,40 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
for (var scan = ex; scan != null; scan = scan.InnerException)
|
for (var scan = ex; scan != null; scan = scan.InnerException)
|
||||||
{
|
{
|
||||||
|
var stackTrace = ex.StackTrace;
|
||||||
yield return new ErrorDetails
|
yield return new ErrorDetails
|
||||||
{
|
{
|
||||||
Error = scan,
|
Error = scan,
|
||||||
StackFrames = StackFrames(scan)
|
StackFrames = StackTraceHelper.GetFrames(ex)
|
||||||
|
.Select(frame => GetStackFrame(frame.Method, frame.FilePath, frame.LineNumber))
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<StackFrame> StackFrames(Exception ex)
|
|
||||||
{
|
|
||||||
var stackTrace = ex.StackTrace;
|
|
||||||
if (!string.IsNullOrEmpty(stackTrace))
|
|
||||||
{
|
|
||||||
var heap = new Chunk { Text = stackTrace + Environment.NewLine, End = stackTrace.Length + Environment.NewLine.Length };
|
|
||||||
for (var line = heap.Advance(Environment.NewLine); line.HasValue; line = heap.Advance(Environment.NewLine))
|
|
||||||
{
|
|
||||||
yield return StackFrame(line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private StackFrame StackFrame(Chunk line)
|
|
||||||
{
|
|
||||||
line.Advance(" at ");
|
|
||||||
string function = line.Advance(" in ").ToString();
|
|
||||||
|
|
||||||
//exception message line format differences in .net and mono
|
|
||||||
//On .net : at ConsoleApplication.Program.Main(String[] args) in D:\Program.cs:line 16
|
|
||||||
//On Mono : at ConsoleApplication.Program.Main(String[] args) in d:\Program.cs:16
|
|
||||||
string file = !IsMono ?
|
|
||||||
line.Advance(":line ").ToString() :
|
|
||||||
line.Advance(":").ToString();
|
|
||||||
|
|
||||||
int lineNumber = line.ToInt32();
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(file))
|
|
||||||
{
|
|
||||||
return GetStackFrame(
|
|
||||||
// Handle stack trace lines like
|
|
||||||
// "--- End of stack trace from previous location where exception from thrown ---"
|
|
||||||
string.IsNullOrEmpty(function) ? line.ToString() : function,
|
|
||||||
file: string.Empty,
|
|
||||||
lineNumber: 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return GetStackFrame(function, file, lineNumber);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// make it internal to enable unit testing
|
// make it internal to enable unit testing
|
||||||
internal StackFrame GetStackFrame(string function, string file, int lineNumber)
|
internal StackFrame GetStackFrame(string method, string filePath, int lineNumber)
|
||||||
{
|
{
|
||||||
var frame = new StackFrame { Function = function, File = file, Line = lineNumber };
|
var stackFrame = new StackFrame
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(file))
|
|
||||||
{
|
{
|
||||||
return frame;
|
Function = method,
|
||||||
|
File = filePath,
|
||||||
|
Line = lineNumber
|
||||||
|
};
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(stackFrame.File))
|
||||||
|
{
|
||||||
|
return stackFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<string> lines = null;
|
IEnumerable<string> lines = null;
|
||||||
if (File.Exists(file))
|
if (File.Exists(stackFrame.File))
|
||||||
{
|
{
|
||||||
lines = File.ReadLines(file);
|
lines = File.ReadLines(stackFrame.File);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Handle relative paths and embedded files
|
// Handle relative paths and embedded files
|
||||||
var fileInfo = _fileProvider.GetFileInfo(file);
|
var fileInfo = _fileProvider.GetFileInfo(stackFrame.File);
|
||||||
if (fileInfo.Exists)
|
if (fileInfo.Exists)
|
||||||
{
|
{
|
||||||
// ReadLines doesn't accept a stream. Use ReadLines as its more efficient
|
// ReadLines doesn't accept a stream. Use ReadLines as its more efficient
|
||||||
|
|
@ -273,10 +235,10 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
|
|
||||||
if (lines != null)
|
if (lines != null)
|
||||||
{
|
{
|
||||||
ReadFrameContent(frame, lines, lineNumber, lineNumber);
|
ReadFrameContent(stackFrame, lines, stackFrame.Line, stackFrame.Line);
|
||||||
}
|
}
|
||||||
|
|
||||||
return frame;
|
return stackFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make it internal to enable unit testing
|
// make it internal to enable unit testing
|
||||||
|
|
@ -319,42 +281,5 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class Chunk
|
|
||||||
{
|
|
||||||
public string Text { get; set; }
|
|
||||||
public int Start { get; set; }
|
|
||||||
public int End { get; set; }
|
|
||||||
|
|
||||||
public bool HasValue => Text != null;
|
|
||||||
|
|
||||||
public Chunk Advance(string delimiter)
|
|
||||||
{
|
|
||||||
int indexOf = HasValue ? Text.IndexOf(delimiter, Start, End - Start, StringComparison.Ordinal) : -1;
|
|
||||||
if (indexOf < 0)
|
|
||||||
{
|
|
||||||
return new Chunk();
|
|
||||||
}
|
|
||||||
|
|
||||||
var chunk = new Chunk { Text = Text, Start = Start, End = indexOf };
|
|
||||||
Start = indexOf + delimiter.Length;
|
|
||||||
return chunk;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return HasValue ? Text.Substring(Start, End - Start) : string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int ToInt32()
|
|
||||||
{
|
|
||||||
int value;
|
|
||||||
return HasValue && int.TryParse(
|
|
||||||
Text.Substring(Start, End - Start),
|
|
||||||
NumberStyles.Integer,
|
|
||||||
CultureInfo.InvariantCulture,
|
|
||||||
out value) ? value : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -124,22 +124,17 @@ WriteAttributeValue("", 512, CultureInfo.CurrentUICulture.TwoLetterISOLanguageNa
|
||||||
|
|
||||||
#line 35 "ErrorPage.cshtml"
|
#line 35 "ErrorPage.cshtml"
|
||||||
|
|
||||||
StackFrame firstFrame = null;
|
var firstFrame = errorDetail.StackFrames.FirstOrDefault();
|
||||||
firstFrame = errorDetail.StackFrames.FirstOrDefault();
|
|
||||||
if (firstFrame != null)
|
if (firstFrame != null)
|
||||||
{
|
{
|
||||||
location = firstFrame.Function;
|
location = firstFrame.Function;
|
||||||
}/* TODO: TargetSite is not defined
|
}
|
||||||
else if (errorDetail.Error.TargetSite != null && errorDetail.Error.TargetSite.DeclaringType != null)
|
|
||||||
{
|
|
||||||
location = errorDetail.Error.TargetSite.DeclaringType.FullName + "." + errorDetail.Error.TargetSite.Name;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 46 "ErrorPage.cshtml"
|
#line 41 "ErrorPage.cshtml"
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
|
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
|
||||||
{
|
{
|
||||||
|
|
@ -148,33 +143,33 @@ WriteAttributeValue("", 512, CultureInfo.CurrentUICulture.TwoLetterISOLanguageNa
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p class=\"location\">");
|
WriteLiteral(" <p class=\"location\">");
|
||||||
#line 49 "ErrorPage.cshtml"
|
#line 44 "ErrorPage.cshtml"
|
||||||
Write(location);
|
Write(location);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" in <code");
|
WriteLiteral(" in <code");
|
||||||
BeginWriteAttribute("title", " title=\"", 1882, "\"", 1906, 1);
|
BeginWriteAttribute("title", " title=\"", 1520, "\"", 1544, 1);
|
||||||
#line 49 "ErrorPage.cshtml"
|
#line 44 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
WriteAttributeValue("", 1528, firstFrame.File, 1528, 16, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
#line 49 "ErrorPage.cshtml"
|
#line 44 "ErrorPage.cshtml"
|
||||||
Write(System.IO.Path.GetFileName(firstFrame.File));
|
Write(System.IO.Path.GetFileName(firstFrame.File));
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</code>, line ");
|
WriteLiteral("</code>, line ");
|
||||||
#line 49 "ErrorPage.cshtml"
|
#line 44 "ErrorPage.cshtml"
|
||||||
Write(firstFrame.Line);
|
Write(firstFrame.Line);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 50 "ErrorPage.cshtml"
|
#line 45 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(location))
|
else if (!string.IsNullOrEmpty(location))
|
||||||
{
|
{
|
||||||
|
|
@ -183,13 +178,13 @@ WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p class=\"location\">");
|
WriteLiteral(" <p class=\"location\">");
|
||||||
#line 53 "ErrorPage.cshtml"
|
#line 48 "ErrorPage.cshtml"
|
||||||
Write(location);
|
Write(location);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 54 "ErrorPage.cshtml"
|
#line 49 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -198,13 +193,13 @@ WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p class=\"location\">");
|
WriteLiteral(" <p class=\"location\">");
|
||||||
#line 57 "ErrorPage.cshtml"
|
#line 52 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_UnknownLocation);
|
Write(Resources.ErrorPageHtml_UnknownLocation);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 58 "ErrorPage.cshtml"
|
#line 53 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -212,44 +207,44 @@ WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <ul id=\"header\">\r\n <li id=\"stack\" tabindex=\"1\" class=\"selected\">\r\n ");
|
WriteLiteral(" <ul id=\"header\">\r\n <li id=\"stack\" tabindex=\"1\" class=\"selected\">\r\n ");
|
||||||
#line 62 "ErrorPage.cshtml"
|
#line 57 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_StackButton);
|
Write(Resources.ErrorPageHtml_StackButton);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("\r\n </li>\r\n <li id=\"query\" tabindex=\"2\">\r\n ");
|
WriteLiteral("\r\n </li>\r\n <li id=\"query\" tabindex=\"2\">\r\n ");
|
||||||
#line 65 "ErrorPage.cshtml"
|
#line 60 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_QueryButton);
|
Write(Resources.ErrorPageHtml_QueryButton);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("\r\n </li>\r\n <li id=\"cookies\" tabindex=\"3\">\r\n ");
|
WriteLiteral("\r\n </li>\r\n <li id=\"cookies\" tabindex=\"3\">\r\n ");
|
||||||
#line 68 "ErrorPage.cshtml"
|
#line 63 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_CookiesButton);
|
Write(Resources.ErrorPageHtml_CookiesButton);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("\r\n </li>\r\n <li id=\"headers\" tabindex=\"4\">\r\n ");
|
WriteLiteral("\r\n </li>\r\n <li id=\"headers\" tabindex=\"4\">\r\n ");
|
||||||
#line 71 "ErrorPage.cshtml"
|
#line 66 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_HeadersButton);
|
Write(Resources.ErrorPageHtml_HeadersButton);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("\r\n </li>\r\n </ul>\r\n\r\n <div id=\"stackpage\" class=\"page\">\r\n <ul>\r\n");
|
WriteLiteral("\r\n </li>\r\n </ul>\r\n\r\n <div id=\"stackpage\" class=\"page\">\r\n <ul>\r\n");
|
||||||
#line 77 "ErrorPage.cshtml"
|
#line 72 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 77 "ErrorPage.cshtml"
|
#line 72 "ErrorPage.cshtml"
|
||||||
int tabIndex = 6;
|
int tabIndex = 6;
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" ");
|
WriteLiteral(" ");
|
||||||
#line 78 "ErrorPage.cshtml"
|
#line 73 "ErrorPage.cshtml"
|
||||||
foreach (var errorDetail in Model.ErrorDetails)
|
foreach (var errorDetail in Model.ErrorDetails)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -257,25 +252,25 @@ WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <li>\r\n <h2 class=\"stackerror\">");
|
WriteLiteral(" <li>\r\n <h2 class=\"stackerror\">");
|
||||||
#line 81 "ErrorPage.cshtml"
|
#line 76 "ErrorPage.cshtml"
|
||||||
Write(errorDetail.Error.GetType().Name);
|
Write(errorDetail.Error.GetType().Name);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(": ");
|
WriteLiteral(": ");
|
||||||
#line 81 "ErrorPage.cshtml"
|
#line 76 "ErrorPage.cshtml"
|
||||||
Write(errorDetail.Error.Message);
|
Write(errorDetail.Error.Message);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</h2>\r\n <ul>\r\n");
|
WriteLiteral("</h2>\r\n <ul>\r\n");
|
||||||
#line 83 "ErrorPage.cshtml"
|
#line 78 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 83 "ErrorPage.cshtml"
|
#line 78 "ErrorPage.cshtml"
|
||||||
foreach (var frame in errorDetail.StackFrames)
|
foreach (var frame in errorDetail.StackFrames)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -283,28 +278,28 @@ WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <li class=\"frame\"");
|
WriteLiteral(" <li class=\"frame\"");
|
||||||
BeginWriteAttribute("tabindex", " tabindex=\"", 3310, "\"", 3330, 1);
|
BeginWriteAttribute("tabindex", " tabindex=\"", 2948, "\"", 2968, 1);
|
||||||
#line 85 "ErrorPage.cshtml"
|
#line 80 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 3321, tabIndex, 3321, 9, false);
|
WriteAttributeValue("", 2959, tabIndex, 2959, 9, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(">\r\n");
|
WriteLiteral(">\r\n");
|
||||||
#line 86 "ErrorPage.cshtml"
|
#line 81 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 86 "ErrorPage.cshtml"
|
#line 81 "ErrorPage.cshtml"
|
||||||
tabIndex++;
|
tabIndex++;
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" ");
|
WriteLiteral(" ");
|
||||||
#line 87 "ErrorPage.cshtml"
|
#line 82 "ErrorPage.cshtml"
|
||||||
if (string.IsNullOrEmpty(frame.File))
|
if (string.IsNullOrEmpty(frame.File))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -312,13 +307,13 @@ WriteAttributeValue("", 3321, tabIndex, 3321, 9, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <h3>");
|
WriteLiteral(" <h3>");
|
||||||
#line 89 "ErrorPage.cshtml"
|
#line 84 "ErrorPage.cshtml"
|
||||||
Write(frame.Function);
|
Write(frame.Function);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</h3>\r\n");
|
WriteLiteral("</h3>\r\n");
|
||||||
#line 90 "ErrorPage.cshtml"
|
#line 85 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -327,40 +322,40 @@ WriteAttributeValue("", 3321, tabIndex, 3321, 9, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <h3>");
|
WriteLiteral(" <h3>");
|
||||||
#line 93 "ErrorPage.cshtml"
|
#line 88 "ErrorPage.cshtml"
|
||||||
Write(frame.Function);
|
Write(frame.Function);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" in <code");
|
WriteLiteral(" in <code");
|
||||||
BeginWriteAttribute("title", " title=\"", 3725, "\"", 3744, 1);
|
BeginWriteAttribute("title", " title=\"", 3363, "\"", 3382, 1);
|
||||||
#line 93 "ErrorPage.cshtml"
|
#line 88 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 3733, frame.File, 3733, 11, false);
|
WriteAttributeValue("", 3371, frame.File, 3371, 11, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
#line 93 "ErrorPage.cshtml"
|
#line 88 "ErrorPage.cshtml"
|
||||||
Write(System.IO.Path.GetFileName(frame.File));
|
Write(System.IO.Path.GetFileName(frame.File));
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</code></h3>\r\n");
|
WriteLiteral("</code></h3>\r\n");
|
||||||
#line 94 "ErrorPage.cshtml"
|
#line 89 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral("\r\n");
|
WriteLiteral("\r\n");
|
||||||
#line 96 "ErrorPage.cshtml"
|
#line 91 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 96 "ErrorPage.cshtml"
|
#line 91 "ErrorPage.cshtml"
|
||||||
if (frame.Line != 0 && frame.ContextCode.Any())
|
if (frame.Line != 0 && frame.ContextCode.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -368,13 +363,13 @@ WriteAttributeValue("", 3733, frame.File, 3733, 11, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <div class=\"source\">\r\n");
|
WriteLiteral(" <div class=\"source\">\r\n");
|
||||||
#line 99 "ErrorPage.cshtml"
|
#line 94 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 99 "ErrorPage.cshtml"
|
#line 94 "ErrorPage.cshtml"
|
||||||
if (frame.PreContextCode.Any())
|
if (frame.PreContextCode.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -382,21 +377,21 @@ WriteAttributeValue("", 3733, frame.File, 3733, 11, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <ol");
|
WriteLiteral(" <ol");
|
||||||
BeginWriteAttribute("start", " start=\"", 4175, "\"", 4204, 1);
|
BeginWriteAttribute("start", " start=\"", 3813, "\"", 3842, 1);
|
||||||
#line 101 "ErrorPage.cshtml"
|
#line 96 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 4183, frame.PreContextLine, 4183, 21, false);
|
WriteAttributeValue("", 3821, frame.PreContextLine, 3821, 21, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(" class=\"collapsible\">\r\n");
|
WriteLiteral(" class=\"collapsible\">\r\n");
|
||||||
#line 102 "ErrorPage.cshtml"
|
#line 97 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 102 "ErrorPage.cshtml"
|
#line 97 "ErrorPage.cshtml"
|
||||||
foreach (var line in frame.PreContextCode)
|
foreach (var line in frame.PreContextCode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -404,41 +399,41 @@ WriteAttributeValue("", 4183, frame.PreContextLine, 4183, 21, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <li><span>");
|
WriteLiteral(" <li><span>");
|
||||||
#line 104 "ErrorPage.cshtml"
|
#line 99 "ErrorPage.cshtml"
|
||||||
Write(line);
|
Write(line);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</span></li>\r\n");
|
WriteLiteral("</span></li>\r\n");
|
||||||
#line 105 "ErrorPage.cshtml"
|
#line 100 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </ol>\r\n");
|
WriteLiteral(" </ol>\r\n");
|
||||||
#line 107 "ErrorPage.cshtml"
|
#line 102 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral("\r\n <ol");
|
WriteLiteral("\r\n <ol");
|
||||||
BeginWriteAttribute("start", " start=\"", 4643, "\"", 4662, 1);
|
BeginWriteAttribute("start", " start=\"", 4281, "\"", 4300, 1);
|
||||||
#line 109 "ErrorPage.cshtml"
|
#line 104 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 4651, frame.Line, 4651, 11, false);
|
WriteAttributeValue("", 4289, frame.Line, 4289, 11, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(" class=\"highlight\">\r\n");
|
WriteLiteral(" class=\"highlight\">\r\n");
|
||||||
#line 110 "ErrorPage.cshtml"
|
#line 105 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 110 "ErrorPage.cshtml"
|
#line 105 "ErrorPage.cshtml"
|
||||||
foreach (var line in frame.ContextCode)
|
foreach (var line in frame.ContextCode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -446,26 +441,26 @@ WriteAttributeValue("", 4651, frame.Line, 4651, 11, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <li><span>");
|
WriteLiteral(" <li><span>");
|
||||||
#line 112 "ErrorPage.cshtml"
|
#line 107 "ErrorPage.cshtml"
|
||||||
Write(line);
|
Write(line);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</span></li>\r\n");
|
WriteLiteral("</span></li>\r\n");
|
||||||
#line 113 "ErrorPage.cshtml"
|
#line 108 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </ol>\r\n\r\n");
|
WriteLiteral(" </ol>\r\n\r\n");
|
||||||
#line 116 "ErrorPage.cshtml"
|
#line 111 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 116 "ErrorPage.cshtml"
|
#line 111 "ErrorPage.cshtml"
|
||||||
if (frame.PostContextCode.Any())
|
if (frame.PostContextCode.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -473,21 +468,21 @@ WriteAttributeValue("", 4651, frame.Line, 4651, 11, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <ol");
|
WriteLiteral(" <ol");
|
||||||
BeginWriteAttribute("start", " start=\'", 5155, "\'", 5180, 1);
|
BeginWriteAttribute("start", " start=\'", 4793, "\'", 4818, 1);
|
||||||
#line 118 "ErrorPage.cshtml"
|
#line 113 "ErrorPage.cshtml"
|
||||||
WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
WriteAttributeValue("", 4801, frame.Line + 1, 4801, 17, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
WriteLiteral(" class=\"collapsible\">\r\n");
|
WriteLiteral(" class=\"collapsible\">\r\n");
|
||||||
#line 119 "ErrorPage.cshtml"
|
#line 114 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 119 "ErrorPage.cshtml"
|
#line 114 "ErrorPage.cshtml"
|
||||||
foreach (var line in frame.PostContextCode)
|
foreach (var line in frame.PostContextCode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -495,34 +490,34 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <li><span>");
|
WriteLiteral(" <li><span>");
|
||||||
#line 121 "ErrorPage.cshtml"
|
#line 116 "ErrorPage.cshtml"
|
||||||
Write(line);
|
Write(line);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</span></li>\r\n");
|
WriteLiteral("</span></li>\r\n");
|
||||||
#line 122 "ErrorPage.cshtml"
|
#line 117 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </ol>\r\n");
|
WriteLiteral(" </ol>\r\n");
|
||||||
#line 124 "ErrorPage.cshtml"
|
#line 119 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </div>\r\n");
|
WriteLiteral(" </div>\r\n");
|
||||||
#line 126 "ErrorPage.cshtml"
|
#line 121 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </li>\r\n");
|
WriteLiteral(" </li>\r\n");
|
||||||
#line 128 "ErrorPage.cshtml"
|
#line 123 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
|
|
@ -538,26 +533,26 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
</div>
|
</div>
|
||||||
<div id=""rawException"" style=""display:none"">
|
<div id=""rawException"" style=""display:none"">
|
||||||
<pre>");
|
<pre>");
|
||||||
#line 138 "ErrorPage.cshtml"
|
#line 133 "ErrorPage.cshtml"
|
||||||
Write(errorDetail.Error.ToString());
|
Write(errorDetail.Error.ToString());
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</pre>\r\n </div>\r\n </div>\r\n </li>\r\n");
|
WriteLiteral("</pre>\r\n </div>\r\n </div>\r\n </li>\r\n");
|
||||||
#line 142 "ErrorPage.cshtml"
|
#line 137 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </ul>\r\n </div>\r\n\r\n <div id=\"querypage\" class=\"page\">\r\n");
|
WriteLiteral(" </ul>\r\n </div>\r\n\r\n <div id=\"querypage\" class=\"page\">\r\n");
|
||||||
#line 147 "ErrorPage.cshtml"
|
#line 142 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 147 "ErrorPage.cshtml"
|
#line 142 "ErrorPage.cshtml"
|
||||||
if (Model.Query.Any())
|
if (Model.Query.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -565,25 +560,25 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
||||||
#line 152 "ErrorPage.cshtml"
|
#line 147 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_VariableColumn);
|
Write(Resources.ErrorPageHtml_VariableColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n <th>");
|
WriteLiteral("</th>\r\n <th>");
|
||||||
#line 153 "ErrorPage.cshtml"
|
#line 148 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_ValueColumn);
|
Write(Resources.ErrorPageHtml_ValueColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
||||||
#line 157 "ErrorPage.cshtml"
|
#line 152 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 157 "ErrorPage.cshtml"
|
#line 152 "ErrorPage.cshtml"
|
||||||
foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
|
foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
|
||||||
{
|
{
|
||||||
foreach (var v in kv.Value)
|
foreach (var v in kv.Value)
|
||||||
|
|
@ -593,19 +588,19 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <tr>\r\n <td>");
|
WriteLiteral(" <tr>\r\n <td>");
|
||||||
#line 162 "ErrorPage.cshtml"
|
#line 157 "ErrorPage.cshtml"
|
||||||
Write(kv.Key);
|
Write(kv.Key);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n <td>");
|
WriteLiteral("</td>\r\n <td>");
|
||||||
#line 163 "ErrorPage.cshtml"
|
#line 158 "ErrorPage.cshtml"
|
||||||
Write(v);
|
Write(v);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n </tr>\r\n");
|
WriteLiteral("</td>\r\n </tr>\r\n");
|
||||||
#line 165 "ErrorPage.cshtml"
|
#line 160 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -613,7 +608,7 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
||||||
#line 169 "ErrorPage.cshtml"
|
#line 164 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -622,26 +617,26 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p>");
|
WriteLiteral(" <p>");
|
||||||
#line 172 "ErrorPage.cshtml"
|
#line 167 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_NoQueryStringData);
|
Write(Resources.ErrorPageHtml_NoQueryStringData);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 173 "ErrorPage.cshtml"
|
#line 168 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </div>\r\n\r\n <div id=\"cookiespage\" class=\"page\">\r\n");
|
WriteLiteral(" </div>\r\n\r\n <div id=\"cookiespage\" class=\"page\">\r\n");
|
||||||
#line 177 "ErrorPage.cshtml"
|
#line 172 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 177 "ErrorPage.cshtml"
|
#line 172 "ErrorPage.cshtml"
|
||||||
if (Model.Cookies.Any())
|
if (Model.Cookies.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -649,25 +644,25 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
||||||
#line 182 "ErrorPage.cshtml"
|
#line 177 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_VariableColumn);
|
Write(Resources.ErrorPageHtml_VariableColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n <th>");
|
WriteLiteral("</th>\r\n <th>");
|
||||||
#line 183 "ErrorPage.cshtml"
|
#line 178 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_ValueColumn);
|
Write(Resources.ErrorPageHtml_ValueColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
||||||
#line 187 "ErrorPage.cshtml"
|
#line 182 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 187 "ErrorPage.cshtml"
|
#line 182 "ErrorPage.cshtml"
|
||||||
foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
|
foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -675,26 +670,26 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <tr>\r\n <td>");
|
WriteLiteral(" <tr>\r\n <td>");
|
||||||
#line 190 "ErrorPage.cshtml"
|
#line 185 "ErrorPage.cshtml"
|
||||||
Write(kv.Key);
|
Write(kv.Key);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n <td>");
|
WriteLiteral("</td>\r\n <td>");
|
||||||
#line 191 "ErrorPage.cshtml"
|
#line 186 "ErrorPage.cshtml"
|
||||||
Write(kv.Value);
|
Write(kv.Value);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n </tr>\r\n");
|
WriteLiteral("</td>\r\n </tr>\r\n");
|
||||||
#line 193 "ErrorPage.cshtml"
|
#line 188 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
||||||
#line 196 "ErrorPage.cshtml"
|
#line 191 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -703,26 +698,26 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p>");
|
WriteLiteral(" <p>");
|
||||||
#line 199 "ErrorPage.cshtml"
|
#line 194 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_NoCookieData);
|
Write(Resources.ErrorPageHtml_NoCookieData);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 200 "ErrorPage.cshtml"
|
#line 195 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </div>\r\n <div id=\"headerspage\" class=\"page\">\r\n");
|
WriteLiteral(" </div>\r\n <div id=\"headerspage\" class=\"page\">\r\n");
|
||||||
#line 203 "ErrorPage.cshtml"
|
#line 198 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 203 "ErrorPage.cshtml"
|
#line 198 "ErrorPage.cshtml"
|
||||||
if (Model.Headers.Any())
|
if (Model.Headers.Any())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -730,25 +725,25 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
WriteLiteral(" <table>\r\n <thead>\r\n <tr>\r\n <th>");
|
||||||
#line 208 "ErrorPage.cshtml"
|
#line 203 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_VariableColumn);
|
Write(Resources.ErrorPageHtml_VariableColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n <th>");
|
WriteLiteral("</th>\r\n <th>");
|
||||||
#line 209 "ErrorPage.cshtml"
|
#line 204 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_ValueColumn);
|
Write(Resources.ErrorPageHtml_ValueColumn);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n");
|
||||||
#line 213 "ErrorPage.cshtml"
|
#line 208 "ErrorPage.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 213 "ErrorPage.cshtml"
|
#line 208 "ErrorPage.cshtml"
|
||||||
foreach (var kv in Model.Headers.OrderBy(kv => kv.Key))
|
foreach (var kv in Model.Headers.OrderBy(kv => kv.Key))
|
||||||
{
|
{
|
||||||
foreach (var v in kv.Value)
|
foreach (var v in kv.Value)
|
||||||
|
|
@ -758,19 +753,19 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <tr>\r\n <td>");
|
WriteLiteral(" <tr>\r\n <td>");
|
||||||
#line 218 "ErrorPage.cshtml"
|
#line 213 "ErrorPage.cshtml"
|
||||||
Write(kv.Key);
|
Write(kv.Key);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n <td>");
|
WriteLiteral("</td>\r\n <td>");
|
||||||
#line 219 "ErrorPage.cshtml"
|
#line 214 "ErrorPage.cshtml"
|
||||||
Write(v);
|
Write(v);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</td>\r\n </tr>\r\n");
|
WriteLiteral("</td>\r\n </tr>\r\n");
|
||||||
#line 221 "ErrorPage.cshtml"
|
#line 216 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -778,7 +773,7 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
WriteLiteral(" </tbody>\r\n </table>\r\n");
|
||||||
#line 225 "ErrorPage.cshtml"
|
#line 220 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -787,13 +782,13 @@ WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
WriteLiteral(" <p>");
|
WriteLiteral(" <p>");
|
||||||
#line 228 "ErrorPage.cshtml"
|
#line 223 "ErrorPage.cshtml"
|
||||||
Write(Resources.ErrorPageHtml_NoHeaderData);
|
Write(Resources.ErrorPageHtml_NoHeaderData);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("</p>\r\n");
|
WriteLiteral("</p>\r\n");
|
||||||
#line 229 "ErrorPage.cshtml"
|
#line 224 "ErrorPage.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
|
|
|
||||||
|
|
@ -33,16 +33,11 @@
|
||||||
{
|
{
|
||||||
<div class="titleerror">@errorDetail.Error.GetType().Name: @{ Output.Write(HtmlEncodeAndReplaceLineBreaks(errorDetail.Error.Message)); }</div>
|
<div class="titleerror">@errorDetail.Error.GetType().Name: @{ Output.Write(HtmlEncodeAndReplaceLineBreaks(errorDetail.Error.Message)); }</div>
|
||||||
@{
|
@{
|
||||||
StackFrame firstFrame = null;
|
var firstFrame = errorDetail.StackFrames.FirstOrDefault();
|
||||||
firstFrame = errorDetail.StackFrames.FirstOrDefault();
|
|
||||||
if (firstFrame != null)
|
if (firstFrame != null)
|
||||||
{
|
{
|
||||||
location = firstFrame.Function;
|
location = firstFrame.Function;
|
||||||
}/* TODO: TargetSite is not defined
|
}
|
||||||
else if (errorDetail.Error.TargetSite != null && errorDetail.Error.TargetSite.DeclaringType != null)
|
|
||||||
{
|
|
||||||
location = errorDetail.Error.TargetSite.DeclaringType.FullName + "." + errorDetail.Error.TargetSite.Name;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
|
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Diagnostics.Views
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Detailed exception stack information used to generate a view
|
||||||
|
/// </summary>
|
||||||
|
public class StackFrameInfo
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Function containing instruction
|
||||||
|
/// </summary>
|
||||||
|
public string Function { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// File containing the instruction
|
||||||
|
/// </summary>
|
||||||
|
public string File { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The line number of the instruction
|
||||||
|
/// </summary>
|
||||||
|
public int Line { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The line preceeding the frame line
|
||||||
|
/// </summary>
|
||||||
|
public int PreContextLine { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Lines of code before the actual error line(s).
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<string> PreContextCode { get; set; } = Enumerable.Empty<string>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Line(s) of code responsible for the error.
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<string> ContextCode { get; set; } = Enumerable.Empty<string>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Lines of code after the actual error line(s).
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<string> PostContextCode { get; set; } = Enumerable.Empty<string>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specific error details for this stack frame.
|
||||||
|
/// </summary>
|
||||||
|
public string ErrorDetails { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,12 +31,18 @@
|
||||||
"Microsoft.Extensions.FileProviders.Physical": "1.0.0-*",
|
"Microsoft.Extensions.FileProviders.Physical": "1.0.0-*",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-*",
|
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-*",
|
||||||
"Microsoft.Extensions.Options": "1.0.0-*",
|
"Microsoft.Extensions.Options": "1.0.0-*",
|
||||||
"System.Diagnostics.DiagnosticSource": "4.0.0-*"
|
"Microsoft.Extensions.StackTrace.Sources": {
|
||||||
|
"type": "build",
|
||||||
|
"version": "1.0.0-*"
|
||||||
|
},
|
||||||
|
"System.Diagnostics.DiagnosticSource": "4.0.0-*",
|
||||||
|
"System.Reflection.Metadata": "1.3.0-*"
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net451": {},
|
"net451": {},
|
||||||
"netstandard1.3": {
|
"netstandard1.5": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"System.Diagnostics.StackTrace": "4.0.1-*",
|
||||||
"System.Reflection.Extensions": "4.0.1-*"
|
"System.Reflection.Extensions": "4.0.1-*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Runtime.Versioning;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -16,14 +15,13 @@ using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.FileProviders;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using Xunit;
|
|
||||||
using StackFrame = Microsoft.AspNetCore.Diagnostics.Views.StackFrame;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Diagnostics
|
namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
|
|
@ -273,7 +271,7 @@ namespace Microsoft.AspNetCore.Diagnostics
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var middleware = GetErrorPageMiddleware();
|
var middleware = GetErrorPageMiddleware();
|
||||||
var stackFrame = new StackFrame();
|
var stackFrame = new Views.StackFrame();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
middleware.ReadFrameContent(
|
middleware.ReadFrameContent(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue