Beispiel #1
0
        // make it internal to enable unit testing
        internal void ReadFrameContent(
            StackFrame frame,
            IEnumerable <string> allLines,
            int errorStartLineNumberInFile,
            int errorEndLineNumberInFile)
        {
            // Get the line boundaries in the file to be read and read all these lines at once into an array.
            var preErrorLineNumberInFile  = Math.Max(errorStartLineNumberInFile - _options.SourceCodeLineCount, 1);
            var postErrorLineNumberInFile = errorEndLineNumberInFile + _options.SourceCodeLineCount;
            var codeBlock = allLines
                            .Skip(preErrorLineNumberInFile - 1)
                            .Take(postErrorLineNumberInFile - preErrorLineNumberInFile + 1)
                            .ToArray();

            var numOfErrorLines             = (errorEndLineNumberInFile - errorStartLineNumberInFile) + 1;
            var errorStartLineNumberInArray = errorStartLineNumberInFile - preErrorLineNumberInFile;

            frame.PreContextLine = preErrorLineNumberInFile;
            frame.PreContextCode = codeBlock.Take(errorStartLineNumberInArray).ToArray();
            frame.ContextCode    = codeBlock
                                   .Skip(errorStartLineNumberInArray)
                                   .Take(numOfErrorLines)
                                   .ToArray();
            frame.PostContextCode = codeBlock
                                    .Skip(errorStartLineNumberInArray + numOfErrorLines)
                                    .ToArray();
        }
Beispiel #2
0
        public void DisplaysSourceCodeLines_PreAndPostErrorLine(ErrorData errorData)
        {
            // Arrange
            var middleware = GetErrorPageMiddleware();
            var stackFrame = new Views.StackFrame();

            // Act
            middleware.ReadFrameContent(
                stackFrame, errorData.AllLines, errorData.ErrorStartLine, errorData.ErrorEndLine);

            // Assert
            Assert.Equal(errorData.ExpectedPreContextLine, stackFrame.PreContextLine);
            Assert.Equal(errorData.ExpectedPreErrorCode, stackFrame.PreContextCode);
            Assert.Equal(errorData.ExpectedErrorCode, stackFrame.ContextCode);
            Assert.Equal(errorData.ExpectedPostErrorCode, stackFrame.PostContextCode);
        }
Beispiel #3
0
        private Task DisplayCompilationException(
            HttpContext context,
            ICompilationException compilationException)
        {
            var model = new CompilationErrorPageModel
            {
                Options = _options,
            };

            foreach (var compilationFailure in compilationException.CompilationFailures)
            {
                var stackFrames  = new List <StackFrame>();
                var errorDetails = new ErrorDetails
                {
                    StackFrames = stackFrames
                };
                var fileContent = compilationFailure
                                  .SourceFileContent
                                  .Split(new[] { Environment.NewLine }, StringSplitOptions.None);

                foreach (var item in compilationFailure.Messages)
                {
                    var frame = new StackFrame
                    {
                        File     = compilationFailure.SourceFilePath,
                        Line     = item.StartLine,
                        Function = string.Empty
                    };

                    ReadFrameContent(frame, fileContent, item.StartLine, item.EndLine);
                    frame.ErrorDetails = item.Message;

                    stackFrames.Add(frame);
                }

                model.ErrorDetails.Add(errorDetails);
            }

            var errorPage = new CompilationErrorPage
            {
                Model = model
            };

            return(errorPage.ExecuteAsync(context));
        }
Beispiel #4
0
        // make it internal to enable unit testing
        internal StackFrame GetStackFrame(string function, string file, int lineNumber)
        {
            var frame = new StackFrame {
                Function = function, File = file, Line = lineNumber
            };

            if (string.IsNullOrEmpty(file))
            {
                return(frame);
            }

            IEnumerable <string> lines = null;

            if (File.Exists(file))
            {
                lines = File.ReadLines(file);
            }
            else
            {
                // Handle relative paths and embedded files
                var fileInfo = _fileProvider.GetFileInfo(file);
                if (fileInfo.Exists)
                {
                    // ReadLines doesn't accept a stream. Use ReadLines as its more efficient
                    // relative to reading lines via stream reader
                    if (!string.IsNullOrEmpty(fileInfo.PhysicalPath))
                    {
                        lines = File.ReadLines(fileInfo.PhysicalPath);
                    }
                    else
                    {
                        lines = ReadLines(fileInfo);
                    }
                }
            }

            if (lines != null)
            {
                ReadFrameContent(frame, lines, lineNumber, lineNumber);
            }

            return(frame);
        }
Beispiel #5
0
        #pragma warning disable 1998
        public override async Task ExecuteAsync()
        {
#line 16 "ErrorPage.cshtml"

            // TODO: Response.ReasonPhrase = "Internal Server Error";
            Response.ContentType = "text/html; charset=utf-8";
            string location = string.Empty;

#line default
#line hidden

            WriteLiteral("<!DOCTYPE html>\r\n<html");
            BeginWriteAttribute("lang", " lang=\"", 505, "\"", 566, 1);
#line 22 "ErrorPage.cshtml"
            WriteAttributeValue("", 512, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, 512, 54, false);

#line default
#line hidden
            EndWriteAttribute();
            WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n    <head>\r\n        <meta charset=\"utf-8\" />\r\n        <title>");
#line 25 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_Title);

#line default
#line hidden
            WriteLiteral("</title>\r\n        <style>\r\n            body {\r\n    font-family: 'Segoe UI', Tahoma, Arial, Helvetica, sans-serif;\r\n    font-size: .813em;\r\n    line-height: 1.4em;\r\n    color: #222;\r\n}\r\n\r\nh1, h2, h3, h4, h5 {\r\n    /*font-family: 'Segoe UI',Tahoma,Arial,Helvetica,sans-serif;*/\r\n    font-weight: 100;\r\n}\r\n\r\nh1 {\r\n    color: #44525e;\r\n    margin: 15px 0 15px 0;\r\n}\r\n\r\nh2 {\r\n    margin: 10px 5px 0 0;\r\n}\r\n\r\nh3 {\r\n    color: #363636;\r\n    margin: 5px 5px 0 0;\r\n}\r\n\r\ncode {\r\n    font-family: Consolas, \"Courier New\", courier, monospace;\r\n}\r\n\r\nbody .titleerror {\r\n    padding: 3px;\r\n    display: block;\r\n    font-size: 1.5em;\r\n    font-weight: 100;\r\n}\r\n\r\nbody .location {\r\n    margin: 3px 0 10px 30px;\r\n}\r\n\r\n#header {\r\n    font-size: 18px;\r\n    padding: 15px 0;\r\n    border-top: 1px #ddd solid;\r\n    border-bottom: 1px #ddd solid;\r\n    margin-bottom: 0;\r\n}\r\n\r\n    #header li {\r\n        display: inline;\r\n        margin: 5px;\r\n        padding: 5px;\r\n        color: #a0a0a0;\r\n        cursor: pointer;\r\n    }\r\n\r\n        #header li:hover {\r\n            background: #a9e4f9;\r\n            color: #fff;\r\n        }\r\n\r\n        #header .selected {\r\n            background: #44c5f2;\r\n            color: #fff;\r\n        }\r\n\r\n#stackpage ul {\r\n    list-style: none;\r\n    padding-left: 0;\r\n    margin: 0;\r\n    /*border-bottom: 1px #ddd solid;*/\r\n}\r\n\r\n#stackpage .stackerror {\r\n    padding: 5px;\r\n    border-bottom: 1px #ddd solid;\r\n}\r\n\r\n    #stackpage .stackerror:hover {\r\n        background-color: #f0f0f0;\r\n    }\r\n\r\n#stackpage .frame:hover {\r\n    background-color: #f0f0f0;\r\n    text-decoration: none;\r\n}\r\n\r\n#stackpage .frame {\r\n    padding: 2px;\r\n    margin: 0 0 0 30px;\r\n    border-bottom: 1px #ddd solid;\r\n    cursor: pointer;\r\n}\r\n\r\n    #stackpage .frame h3 {\r\n        padding: 5px;\r\n        margin: 0;\r\n    }\r\n\r\n#stackpage .source {\r\n    padding: 0;\r\n}\r\n\r\n    #stackpage .source ol li {\r\n        font-family: Consolas, \"Courier New\", courier, monospace;\r\n        white-space: pre;\r\n    }\r\n\r\n#stackpage .frame:hover .source .highlight li span {\r\n    color: #fff;\r\n    background: #b20000;\r\n}\r\n\r\n#stackpage .source ol.collapsible li {\r\n    color: #888;\r\n}\r\n\r\n    #stackpage .source ol.collapsible li span {\r\n        color: #606060;\r\n    }\r\n\r\n.page table {\r\n    border-collapse: separate;\r\n    border-spacing: 0;\r\n    margin: 0 0 20px;\r\n}\r\n\r\n.page th {\r\n    vertical-align: bottom;\r\n    padding: 10px 5px 5px 5px;\r\n    font-weight: 400;\r\n    color: #a0a0a0;\r\n    text-align: left;\r\n}\r\n\r\n.page td {\r\n    padding: 3px 10px;\r\n}\r\n\r\n.page th, .page td {\r\n    border-right: 1px #ddd solid;\r\n    border-bottom: 1px #ddd solid;\r\n    border-left: 1px transparent solid;\r\n    border-top: 1px transparent solid;\r\n    box-sizing: border-box;\r\n}\r\n\r\n    .page th:last-child, .page td:last-child {\r\n        border-right: 1px transparent solid;\r\n    }\r\n\r\n    .page .length {\r\n        text-align: right;\r\n    }\r\n\r\na {\r\n    color: #1ba1e2;\r\n    text-decoration: none;\r\n}\r\n\r\n    a:hover {\r\n        color: #13709e;\r\n        text-decoration: underline;\r\n    }\r\n\r\n        </style>\r\n    </head>\r\n    <body>\r\n        <h1>");
#line 31 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_UnhandledException);

#line default
#line hidden
            WriteLiteral("</h1>\r\n");
#line 32 "ErrorPage.cshtml"


#line default
#line hidden

#line 32 "ErrorPage.cshtml"
            foreach (var errorDetail in Model.ErrorDetails)
            {
#line default
#line hidden

                WriteLiteral("            <div class=\"titleerror\">");
#line 34 "ErrorPage.cshtml"
                Write(errorDetail.Error.GetType().Name);

#line default
#line hidden
                WriteLiteral(": ");
#line 34 "ErrorPage.cshtml"
                Output.Write(HtmlEncodeAndReplaceLineBreaks(errorDetail.Error.Message));

#line default
#line hidden

                WriteLiteral("</div>\r\n");
#line 35 "ErrorPage.cshtml"


#line default
#line hidden

#line 35 "ErrorPage.cshtml"

                StackFrame firstFrame = null;
                firstFrame = errorDetail.StackFrames.FirstOrDefault();
                if (firstFrame != null)
                {
                    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 hidden

#line 46 "ErrorPage.cshtml"

                if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
                {
#line default
#line hidden

                    WriteLiteral("                <p class=\"location\">");
#line 49 "ErrorPage.cshtml"
                    Write(location);

#line default
#line hidden
                    WriteLiteral(" in <code");
                    BeginWriteAttribute("title", " title=\"", 1882, "\"", 1906, 1);
#line 49 "ErrorPage.cshtml"
                    WriteAttributeValue("", 1890, firstFrame.File, 1890, 16, false);

#line default
#line hidden
                    EndWriteAttribute();
                    WriteLiteral(">");
#line 49 "ErrorPage.cshtml"
                    Write(System.IO.Path.GetFileName(firstFrame.File));

#line default
#line hidden
                    WriteLiteral("</code>, line ");
#line 49 "ErrorPage.cshtml"
                    Write(firstFrame.Line);

#line default
#line hidden
                    WriteLiteral("</p>\r\n");
#line 50 "ErrorPage.cshtml"
                }
                else if (!string.IsNullOrEmpty(location))
                {
#line default
#line hidden

                    WriteLiteral("                <p class=\"location\">");
#line 53 "ErrorPage.cshtml"
                    Write(location);

#line default
#line hidden
                    WriteLiteral("</p>\r\n");
#line 54 "ErrorPage.cshtml"
                }
                else
                {
#line default
#line hidden

                    WriteLiteral("                <p class=\"location\">");
#line 57 "ErrorPage.cshtml"
                    Write(Resources.ErrorPageHtml_UnknownLocation);

#line default
#line hidden
                    WriteLiteral("</p>\r\n");
#line 58 "ErrorPage.cshtml"
                }
            }

#line default
#line hidden

            WriteLiteral("        <ul id=\"header\">\r\n            <li id=\"stack\" tabindex=\"1\" class=\"selected\">\r\n                ");
#line 62 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_StackButton);

#line default
#line hidden
            WriteLiteral("\r\n            </li>\r\n            <li id=\"query\" tabindex=\"2\">\r\n                ");
#line 65 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_QueryButton);

#line default
#line hidden
            WriteLiteral("\r\n            </li>\r\n            <li id=\"cookies\" tabindex=\"3\">\r\n                ");
#line 68 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_CookiesButton);

#line default
#line hidden
            WriteLiteral("\r\n            </li>\r\n            <li id=\"headers\" tabindex=\"4\">\r\n                ");
#line 71 "ErrorPage.cshtml"
            Write(Resources.ErrorPageHtml_HeadersButton);

#line default
#line hidden
            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 default
#line hidden

#line 77 "ErrorPage.cshtml"
            int tabIndex = 6;

#line default
#line hidden

            WriteLiteral("                ");
#line 78 "ErrorPage.cshtml"
            foreach (var errorDetail in Model.ErrorDetails)
            {
#line default
#line hidden

                WriteLiteral("                    <li>\r\n                        <h2 class=\"stackerror\">");
#line 81 "ErrorPage.cshtml"
                Write(errorDetail.Error.GetType().Name);

#line default
#line hidden
                WriteLiteral(": ");
#line 81 "ErrorPage.cshtml"
                Write(errorDetail.Error.Message);

#line default
#line hidden
                WriteLiteral("</h2>\r\n                        <ul>\r\n");
#line 83 "ErrorPage.cshtml"


#line default
#line hidden

#line 83 "ErrorPage.cshtml"
                foreach (var frame in errorDetail.StackFrames)
                {
#line default
#line hidden

                    WriteLiteral("                            <li class=\"frame\"");
                    BeginWriteAttribute("tabindex", " tabindex=\"", 3310, "\"", 3330, 1);
#line 85 "ErrorPage.cshtml"
                    WriteAttributeValue("", 3321, tabIndex, 3321, 9, false);

#line default
#line hidden
                    EndWriteAttribute();
                    WriteLiteral(">\r\n");
#line 86 "ErrorPage.cshtml"


#line default
#line hidden

#line 86 "ErrorPage.cshtml"
                    tabIndex++;

#line default
#line hidden

                    WriteLiteral("                                ");
#line 87 "ErrorPage.cshtml"
                    if (string.IsNullOrEmpty(frame.File))
                    {
#line default
#line hidden

                        WriteLiteral("                                    <h3>");
#line 89 "ErrorPage.cshtml"
                        Write(frame.Function);

#line default
#line hidden
                        WriteLiteral("</h3>\r\n");
#line 90 "ErrorPage.cshtml"
                    }
                    else
                    {
#line default
#line hidden

                        WriteLiteral("                                    <h3>");
#line 93 "ErrorPage.cshtml"
                        Write(frame.Function);

#line default
#line hidden
                        WriteLiteral(" in <code");
                        BeginWriteAttribute("title", " title=\"", 3725, "\"", 3744, 1);
#line 93 "ErrorPage.cshtml"
                        WriteAttributeValue("", 3733, frame.File, 3733, 11, false);

#line default
#line hidden
                        EndWriteAttribute();
                        WriteLiteral(">");
#line 93 "ErrorPage.cshtml"
                        Write(System.IO.Path.GetFileName(frame.File));

#line default
#line hidden
                        WriteLiteral("</code></h3>\r\n");
#line 94 "ErrorPage.cshtml"
                    }

#line default
#line hidden

                    WriteLiteral("\r\n");
#line 96 "ErrorPage.cshtml"


#line default
#line hidden

#line 96 "ErrorPage.cshtml"
                    if (frame.Line != 0 && frame.ContextCode.Any())
                    {
#line default
#line hidden

                        WriteLiteral("                                    <div class=\"source\">\r\n");
#line 99 "ErrorPage.cshtml"


#line default
#line hidden

#line 99 "ErrorPage.cshtml"
                        if (frame.PreContextCode.Any())
                        {
#line default
#line hidden

                            WriteLiteral("                                            <ol");
                            BeginWriteAttribute("start", " start=\"", 4175, "\"", 4204, 1);
#line 101 "ErrorPage.cshtml"
                            WriteAttributeValue("", 4183, frame.PreContextLine, 4183, 21, false);

#line default
#line hidden
                            EndWriteAttribute();
                            WriteLiteral(" class=\"collapsible\">\r\n");
#line 102 "ErrorPage.cshtml"


#line default
#line hidden

#line 102 "ErrorPage.cshtml"
                            foreach (var line in frame.PreContextCode)
                            {
#line default
#line hidden

                                WriteLiteral("                                                    <li><span>");
#line 104 "ErrorPage.cshtml"
                                Write(line);

#line default
#line hidden
                                WriteLiteral("</span></li>\r\n");
#line 105 "ErrorPage.cshtml"
                            }

#line default
#line hidden

                            WriteLiteral("                                            </ol>\r\n");
#line 107 "ErrorPage.cshtml"
                        }

#line default
#line hidden

                        WriteLiteral("\r\n                                        <ol");
                        BeginWriteAttribute("start", " start=\"", 4643, "\"", 4662, 1);
#line 109 "ErrorPage.cshtml"
                        WriteAttributeValue("", 4651, frame.Line, 4651, 11, false);

#line default
#line hidden
                        EndWriteAttribute();
                        WriteLiteral(" class=\"highlight\">\r\n");
#line 110 "ErrorPage.cshtml"


#line default
#line hidden

#line 110 "ErrorPage.cshtml"
                        foreach (var line in frame.ContextCode)
                        {
#line default
#line hidden

                            WriteLiteral("                                                <li><span>");
#line 112 "ErrorPage.cshtml"
                            Write(line);

#line default
#line hidden
                            WriteLiteral("</span></li>\r\n");
#line 113 "ErrorPage.cshtml"
                        }

#line default
#line hidden

                        WriteLiteral("                                        </ol>\r\n\r\n");
#line 116 "ErrorPage.cshtml"


#line default
#line hidden

#line 116 "ErrorPage.cshtml"
                        if (frame.PostContextCode.Any())
                        {
#line default
#line hidden

                            WriteLiteral("                                            <ol");
                            BeginWriteAttribute("start", " start=\'", 5155, "\'", 5180, 1);
#line 118 "ErrorPage.cshtml"
                            WriteAttributeValue("", 5163, frame.Line + 1, 5163, 17, false);

#line default
#line hidden
                            EndWriteAttribute();
                            WriteLiteral(" class=\"collapsible\">\r\n");
#line 119 "ErrorPage.cshtml"


#line default
#line hidden

#line 119 "ErrorPage.cshtml"
                            foreach (var line in frame.PostContextCode)
                            {
#line default
#line hidden

                                WriteLiteral("                                                    <li><span>");
#line 121 "ErrorPage.cshtml"
                                Write(line);

#line default
#line hidden
                                WriteLiteral("</span></li>\r\n");
#line 122 "ErrorPage.cshtml"
                            }

#line default
#line hidden

                            WriteLiteral("                                            </ol>\r\n");
#line 124 "ErrorPage.cshtml"
                        }

#line default
#line hidden

                        WriteLiteral("                                    </div>\r\n");
#line 126 "ErrorPage.cshtml"
                    }

#line default
#line hidden

                    WriteLiteral("                            </li>\r\n");
#line 128 "ErrorPage.cshtml"
                }

#line default
#line hidden

                WriteLiteral(@"                        </ul>
                    </li>
                    <li>
                        <br/>
                        <div class=""rawExceptionBlock"">
                            <div>
                                <a href=""#"" id=""rawExceptionButton"">Show raw exception details</a>
                            </div>
                            <div id=""rawException"" style=""display:none"">
                                <pre>");
#line 138 "ErrorPage.cshtml"
                Write(errorDetail.Error.ToString());

#line default
#line hidden
                WriteLiteral("</pre>\r\n                            </div>\r\n                        </div>\r\n                    </li>\r\n");
#line 142 "ErrorPage.cshtml"
            }

#line default
#line hidden

            WriteLiteral("            </ul>\r\n        </div>\r\n\r\n        <div id=\"querypage\" class=\"page\">\r\n");
#line 147 "ErrorPage.cshtml"


#line default
#line hidden

#line 147 "ErrorPage.cshtml"
            if (Model.Query.Any())
            {
#line default
#line hidden

                WriteLiteral("                <table>\r\n                    <thead>\r\n                        <tr>\r\n                            <th>");
#line 152 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_VariableColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th>");
#line 153 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_ValueColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n");
#line 157 "ErrorPage.cshtml"


#line default
#line hidden

#line 157 "ErrorPage.cshtml"
                foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
                {
                    foreach (var v in kv.Value)
                    {
#line default
#line hidden

                        WriteLiteral("                                <tr>\r\n                                    <td>");
#line 162 "ErrorPage.cshtml"
                        Write(kv.Key);

#line default
#line hidden
                        WriteLiteral("</td>\r\n                                    <td>");
#line 163 "ErrorPage.cshtml"
                        Write(v);

#line default
#line hidden
                        WriteLiteral("</td>\r\n                                </tr>\r\n");
#line 165 "ErrorPage.cshtml"
                    }
                }

#line default
#line hidden

                WriteLiteral("                    </tbody>\r\n                </table>\r\n");
#line 169 "ErrorPage.cshtml"
            }
            else
            {
#line default
#line hidden

                WriteLiteral("                <p>");
#line 172 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_NoQueryStringData);

#line default
#line hidden
                WriteLiteral("</p>\r\n");
#line 173 "ErrorPage.cshtml"
            }

#line default
#line hidden

            WriteLiteral("        </div>\r\n\r\n        <div id=\"cookiespage\" class=\"page\">\r\n");
#line 177 "ErrorPage.cshtml"


#line default
#line hidden

#line 177 "ErrorPage.cshtml"
            if (Model.Cookies.Any())
            {
#line default
#line hidden

                WriteLiteral("                <table>\r\n                    <thead>\r\n                        <tr>\r\n                            <th>");
#line 182 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_VariableColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th>");
#line 183 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_ValueColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n");
#line 187 "ErrorPage.cshtml"


#line default
#line hidden

#line 187 "ErrorPage.cshtml"
                foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
                {
#line default
#line hidden

                    WriteLiteral("                            <tr>\r\n                                <td>");
#line 190 "ErrorPage.cshtml"
                    Write(kv.Key);

#line default
#line hidden
                    WriteLiteral("</td>\r\n                                <td>");
#line 191 "ErrorPage.cshtml"
                    Write(kv.Value);

#line default
#line hidden
                    WriteLiteral("</td>\r\n                            </tr>\r\n");
#line 193 "ErrorPage.cshtml"
                }

#line default
#line hidden

                WriteLiteral("                    </tbody>\r\n                </table>\r\n");
#line 196 "ErrorPage.cshtml"
            }
            else
            {
#line default
#line hidden

                WriteLiteral("                <p>");
#line 199 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_NoCookieData);

#line default
#line hidden
                WriteLiteral("</p>\r\n");
#line 200 "ErrorPage.cshtml"
            }

#line default
#line hidden

            WriteLiteral("        </div>\r\n        <div id=\"headerspage\" class=\"page\">\r\n");
#line 203 "ErrorPage.cshtml"


#line default
#line hidden

#line 203 "ErrorPage.cshtml"
            if (Model.Headers.Any())
            {
#line default
#line hidden

                WriteLiteral("                <table>\r\n                    <thead>\r\n                        <tr>\r\n                            <th>");
#line 208 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_VariableColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th>");
#line 209 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_ValueColumn);

#line default
#line hidden
                WriteLiteral("</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n");
#line 213 "ErrorPage.cshtml"


#line default
#line hidden

#line 213 "ErrorPage.cshtml"
                foreach (var kv in Model.Headers.OrderBy(kv => kv.Key))
                {
                    foreach (var v in kv.Value)
                    {
#line default
#line hidden

                        WriteLiteral("                                <tr>\r\n                                    <td>");
#line 218 "ErrorPage.cshtml"
                        Write(kv.Key);

#line default
#line hidden
                        WriteLiteral("</td>\r\n                                    <td>");
#line 219 "ErrorPage.cshtml"
                        Write(v);

#line default
#line hidden
                        WriteLiteral("</td>\r\n                                </tr>\r\n");
#line 221 "ErrorPage.cshtml"
                    }
                }

#line default
#line hidden

                WriteLiteral("                    </tbody>\r\n                </table>\r\n");
#line 225 "ErrorPage.cshtml"
            }
            else
            {
#line default
#line hidden

                WriteLiteral("                <p>");
#line 228 "ErrorPage.cshtml"
                Write(Resources.ErrorPageHtml_NoHeaderData);

#line default
#line hidden
                WriteLiteral("</p>\r\n");
#line 229 "ErrorPage.cshtml"
            }

#line default
#line hidden

            WriteLiteral("        </div>\r\n        <script>\r\n            //<!--\r\n            (function (window, undefined) {\r\n    \"use strict\";\r\n\r\n    function ns(selector, element) {\r\n        return new NodeCollection(selector, element);\r\n    }\r\n\r\n    function NodeCollection(selector, element) {\r\n        this.items = [];\r\n        element = element || window.document;\r\n\r\n        var nodeList;\r\n\r\n        if (typeof (selector) === \"string\") {\r\n            nodeList = element.querySelectorAll(selector);\r\n            for (var i = 0, l = nodeList.length; i < l; i++) {\r\n                this.items.push(nodeList.item(i));\r\n            }\r\n        }\r\n    }\r\n\r\n    NodeCollection.prototype = {\r\n        each: function (callback) {\r\n            for (var i = 0, l = this.items.length; i < l; i++) {\r\n                callback(this.items[i], i);\r\n            }\r\n            return this;\r\n        },\r\n\r\n        children: function (selector) {\r\n            var children = [];\r\n\r\n            this.each(function (el) {\r\n                children = children.concat(ns(selector, el).items);\r\n            });\r\n\r\n            return ns(children);\r\n        },\r\n\r\n        hide: function () {\r\n            this.each(function (el) {\r\n                el.style.display = \"none\";\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        toggle: function () {\r\n            this.each(function (el) {\r\n                el.style.display = el.style.display === \"none\" ? \"\" : \"none\";\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        show: function () {\r\n            this.each(function (el) {\r\n                el.style.display = \"\";\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        addClass: function (className) {\r\n            this.each(function (el) {\r\n                var existingClassName = el.className,\r\n                    classNames;\r\n                if (!existingClassName) {\r\n                    el.className = className;\r\n                } else {\r\n                    classNames = existingClassName.split(\" \");\r\n                    if (classNames.indexOf(className) < 0) {\r\n                        el.className = existingClassName + \" \" + className;\r\n                    }\r\n                }\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        removeClass: function (className) {\r\n            this.each(function (el) {\r\n                var existingClassName = el.className,\r\n                    classNames, index;\r\n                if (existingClassName === className) {\r\n                    el.className = \"\";\r\n                } else if (existingClassName) {\r\n                    classNames = existingClassName.split(\" \");\r\n                    index = classNames.indexOf(className);\r\n                    if (index > 0) {\r\n                        classNames.splice(index, 1);\r\n                        el.className = classNames.join(\" \");\r\n                    }\r\n                }\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        attr: function (name) {\r\n            if (this.items.length === 0) {\r\n                return null;\r\n            }\r\n\r\n            return this.items[0].getAttribute(name);\r\n        },\r\n\r\n        on: function (eventName, handler) {\r\n            this.each(function (el, idx) {\r\n                var callback = function (e) {\r\n                    e = e || window.event;\r\n                    if (!e.which && e.keyCode) {\r\n                        e.which = e.keyCode; // Normalize IE8 key events\r\n                    }\r\n                    handler.apply(el, [e]);\r\n                };\r\n\r\n                if (el.addEventListener) { // DOM Events\r\n                    el.addEventListener(eventName, callback, false);\r\n                } else if (el.attachEvent) { // IE8 events\r\n                    el.attachEvent(\"on\" + eventName, callback);\r\n                } else {\r\n                    el[\"on\" + type] = callback;\r\n                }\r\n            });\r\n\r\n            return this;\r\n        },\r\n\r\n        click: function (handler) {\r\n            return this.on(\"click\", handler);\r\n        },\r\n\r\n        keypress: function (handler) {\r\n            return this.on(\"keypress\", handler);\r\n        }\r\n    };\r\n\r\n    function frame(el) {\r\n        ns(\".source .collapsible\", el).toggle();\r\n    }\r\n\r\n    function tab(el) {\r\n        var unselected = ns(\"#header .selected\").removeClass(\"selected\").attr(\"id\");\r\n        var selected = ns(\"#\" + el.id).addClass(\"selected\").attr(\"id\");\r\n\r\n        ns(\"#\" + unselected + \"page\").hide();\r\n        ns(\"#\" + selected + \"page\").show();\r\n    }\r\n\r\n    ns(\".collapsible\").hide();\r\n    ns(\".page\").hide();\r\n    ns(\"#stackpage\").show();\r\n\r\n    ns(\"#rawExceptionButton\").click(function (event) {\r\n        var div = document.getElementById('rawException');\r\n        div.style.display = 'inline-block';\r\n        div.scrollIntoView(true);\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n\r\n        return false;\r\n    });\r\n\r\n    ns(\".frame\")\r\n        .click(function () {\r\n            frame(this);\r\n        })\r\n        .keypress(function (e) {\r\n            if (e.which === 13) {\r\n                frame(this);\r\n            }\r\n        });\r\n\r\n    ns(\"#header li\")\r\n        .click(function () {\r\n            tab(this);\r\n        })\r\n        .keypress(function (e) {\r\n            if (e.which === 13) {\r\n                tab(this);\r\n            }\r\n        });\r\n})(window);\r\n            //-->\r\n        </script>\r\n    </body>\r\n</html>\r\n");
        }