From 7ddfc9cde4ca67b403d8c527f8fa8b77fbb4cee4 Mon Sep 17 00:00:00 2001
From: Chris Ross
Date: Thu, 13 Mar 2014 10:57:15 -0700
Subject: [PATCH 001/603] Initial import from Katana.
---
.gitattributes | 50 +
.gitignore | 24 +
DiagnosticsPages.sln | 64 +
NuGet.Config | 13 +
build.cmd | 23 +
global.json | 3 +
makefile.shade | 7 +
samples/ErrorPageSample/Program.cs | 28 +
samples/ErrorPageSample/Startup.cs | 27 +
samples/ErrorPageSample/project.json | 39 +
samples/WelcomePageSample/Program.cs | 28 +
samples/WelcomePageSample/Startup.cs | 22 +
samples/WelcomePageSample/project.json | 39 +
src/Microsoft.AspNet.Diagnostics/Constants.cs | 24 +
.../DiagnosticsPageExtensions.cs | 53 +
.../DiagnosticsPageMiddleware.cs | 48 +
.../DiagnosticsPageOptions.cs | 20 +
.../ErrorPageExtensions.cs | 50 +
.../ErrorPageMiddleware.cs | 200 +
.../ErrorPageOptions.cs | 117 +
.../Resources.Designer.cs | 315 ++
.../Resources.resx | 212 +
.../Views/BaseView.cs | 442 ++
.../Views/DiagnosticsPage.cs | 133 +
.../Views/DiagnosticsPage.cshtml | 28 +
.../Views/DiagnosticsPage.tt | 26 +
.../Views/ErrorDetails.cs | 39 +
.../Views/ErrorPage.cs | 1649 +++++++
.../Views/ErrorPage.cshtml | 281 ++
.../Views/ErrorPage.css | 172 +
.../Views/ErrorPage.js | 36 +
.../Views/ErrorPage.tt | 51 +
.../Views/ErrorPageModel.cs | 50 +
.../Views/StackFrame.cs | 47 +
.../Views/WelcomePage.cs | 3953 +++++++++++++++++
.../Views/WelcomePage.cshtml | 323 ++
.../Views/WelcomePage.tt | 50 +
.../WelcomePageExtensions.cs | 62 +
.../WelcomePageMiddleware.cs | 58 +
.../WelcomePageOptions.cs | 17 +
src/Microsoft.AspNet.Diagnostics/project.json | 32 +
41 files changed, 8855 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 DiagnosticsPages.sln
create mode 100644 NuGet.Config
create mode 100644 build.cmd
create mode 100644 global.json
create mode 100644 makefile.shade
create mode 100644 samples/ErrorPageSample/Program.cs
create mode 100644 samples/ErrorPageSample/Startup.cs
create mode 100644 samples/ErrorPageSample/project.json
create mode 100644 samples/WelcomePageSample/Program.cs
create mode 100644 samples/WelcomePageSample/Startup.cs
create mode 100644 samples/WelcomePageSample/project.json
create mode 100644 src/Microsoft.AspNet.Diagnostics/Constants.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/ErrorPageOptions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Resources.Designer.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Resources.resx
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cshtml
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.css
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/StackFrame.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cshtml
create mode 100644 src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
create mode 100644 src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
create mode 100644 src/Microsoft.AspNet.Diagnostics/project.json
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..bdaa5ba982
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,50 @@
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
+
+*.jpg binary
+*.png binary
+*.gif binary
+
+*.cs text=auto diff=csharp
+*.vb text=auto
+*.resx text=auto
+*.c text=auto
+*.cpp text=auto
+*.cxx text=auto
+*.h text=auto
+*.hxx text=auto
+*.py text=auto
+*.rb text=auto
+*.java text=auto
+*.html text=auto
+*.htm text=auto
+*.css text=auto
+*.scss text=auto
+*.sass text=auto
+*.less text=auto
+*.js text=auto
+*.lisp text=auto
+*.clj text=auto
+*.sql text=auto
+*.php text=auto
+*.lua text=auto
+*.m text=auto
+*.asm text=auto
+*.erl text=auto
+*.fs text=auto
+*.fsx text=auto
+*.hs text=auto
+
+*.csproj text=auto
+*.vbproj text=auto
+*.fsproj text=auto
+*.dbproj text=auto
+*.sln text=auto eol=crlf
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..8bc217058d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+[Oo]bj/
+[Bb]in/
+TestResults/
+.nuget/
+_ReSharper.*/
+packages/
+artifacts/
+PublishProfiles/
+*.user
+*.suo
+*.cache
+*.docstates
+_ReSharper.*
+nuget.exe
+*net45.csproj
+*k10.csproj
+*.psess
+*.vsp
+*.pidb
+*.userprefs
+*DS_Store
+*.ncrunchsolution
+*.*sdf
+*.ipch
\ No newline at end of file
diff --git a/DiagnosticsPages.sln b/DiagnosticsPages.sln
new file mode 100644
index 0000000000..2865030cad
--- /dev/null
+++ b/DiagnosticsPages.sln
@@ -0,0 +1,64 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30203.2
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Diagnostics.net45", "src\Microsoft.AspNet.Diagnostics\Microsoft.AspNet.Diagnostics.net45.csproj", "{092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Diagnostics.k10", "src\Microsoft.AspNet.Diagnostics\Microsoft.AspNet.Diagnostics.k10.csproj", "{CBE6B125-407F-403E-9E95-4D0836DEE706}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{509A6F36-AD80-4A18-B5B1-717D38DFF29D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{ACAA0157-A8C4-4152-93DE-90CCDF304087}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelcomePageSample.net45", "samples\WelcomePageSample\WelcomePageSample.net45.csproj", "{7385EBB2-36DD-4EF7-AF9E-3C4348991C64}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelcomePageSample.k10", "samples\WelcomePageSample\WelcomePageSample.k10.csproj", "{E2B98257-E434-439E-B61F-A3576F18FD34}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ErrorPageSample.k10", "samples\ErrorPageSample\ErrorPageSample.k10.csproj", "{FA5E49FF-4715-4241-9829-6E720AE5AA1D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ErrorPageSample.net45", "samples\ErrorPageSample\ErrorPageSample.net45.csproj", "{1E44DE4A-BAB3-4383-B63F-63D8416AAC60}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CBE6B125-407F-403E-9E95-4D0836DEE706}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CBE6B125-407F-403E-9E95-4D0836DEE706}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CBE6B125-407F-403E-9E95-4D0836DEE706}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CBE6B125-407F-403E-9E95-4D0836DEE706}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E2B98257-E434-439E-B61F-A3576F18FD34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E2B98257-E434-439E-B61F-A3576F18FD34}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E2B98257-E434-439E-B61F-A3576F18FD34}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E2B98257-E434-439E-B61F-A3576F18FD34}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
+ {CBE6B125-407F-403E-9E95-4D0836DEE706} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
+ {7385EBB2-36DD-4EF7-AF9E-3C4348991C64} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {E2B98257-E434-439E-B61F-A3576F18FD34} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {FA5E49FF-4715-4241-9829-6E720AE5AA1D} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {1E44DE4A-BAB3-4383-B63F-63D8416AAC60} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ EndGlobalSection
+EndGlobal
diff --git a/NuGet.Config b/NuGet.Config
new file mode 100644
index 0000000000..a059188b09
--- /dev/null
+++ b/NuGet.Config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.cmd b/build.cmd
new file mode 100644
index 0000000000..7045ee1f84
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,23 @@
+@echo off
+cd %~dp0
+
+SETLOCAL
+SET CACHED_NUGET=%LocalAppData%\NuGet\NuGet.exe
+
+IF EXIST %CACHED_NUGET% goto copynuget
+echo Downloading latest version of NuGet.exe...
+IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet
+@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://www.nuget.org/nuget.exe' -OutFile '%CACHED_NUGET%'"
+
+:copynuget
+IF EXIST .nuget\nuget.exe goto restore
+md .nuget
+copy %CACHED_NUGET% .nuget\nuget.exe > nul
+
+:restore
+IF EXIST packages\KoreBuild goto run
+.nuget\NuGet.exe install KoreBuild -ExcludeVersion -o packages -nocache -pre
+.nuget\NuGet.exe install Sake -version 0.2 -o packages -ExcludeVersion
+
+:run
+packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %*
diff --git a/global.json b/global.json
new file mode 100644
index 0000000000..840c36f6ad
--- /dev/null
+++ b/global.json
@@ -0,0 +1,3 @@
+{
+ "sources": ["src"]
+}
\ No newline at end of file
diff --git a/makefile.shade b/makefile.shade
new file mode 100644
index 0000000000..6357ea2841
--- /dev/null
+++ b/makefile.shade
@@ -0,0 +1,7 @@
+
+var VERSION='0.1'
+var FULL_VERSION='0.1'
+var AUTHORS='Microsoft'
+
+use-standard-lifecycle
+k-standard-goals
diff --git a/samples/ErrorPageSample/Program.cs b/samples/ErrorPageSample/Program.cs
new file mode 100644
index 0000000000..a4c76acea0
--- /dev/null
+++ b/samples/ErrorPageSample/Program.cs
@@ -0,0 +1,28 @@
+using System;
+#if NET45
+using System.Diagnostics;
+using Microsoft.Owin.Hosting;
+#endif
+
+namespace ErrorPageSample
+{
+ public class Program
+ {
+ const string baseUrl = "http://localhost:9001/";
+
+ public static void Main()
+ {
+#if NET45
+ using (WebApp.Start(new StartOptions(baseUrl)))
+ {
+ Console.WriteLine("Listening at {0}", baseUrl);
+ Process.Start(baseUrl);
+ Console.WriteLine("Press any key to exit");
+ Console.ReadKey();
+ }
+#else
+ Console.WriteLine("Hello World");
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/ErrorPageSample/Startup.cs b/samples/ErrorPageSample/Startup.cs
new file mode 100644
index 0000000000..d39eb7874c
--- /dev/null
+++ b/samples/ErrorPageSample/Startup.cs
@@ -0,0 +1,27 @@
+#if NET45
+using System;
+using Microsoft.AspNet;
+using Microsoft.AspNet.Abstractions;
+using Owin;
+
+namespace ErrorPageSample
+{
+ public class Startup
+ {
+ public void Configuration(IAppBuilder app)
+ {
+ // Temporary bridge from katana to Owin
+ app.UseBuilder(ConfigurePK);
+ }
+
+ private void ConfigurePK(IBuilder builder)
+ {
+ builder.UseErrorPage();
+ builder.Run(context =>
+ {
+ throw new Exception("Demonstration exception");
+ });
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
new file mode 100644
index 0000000000..f38335b51e
--- /dev/null
+++ b/samples/ErrorPageSample/project.json
@@ -0,0 +1,39 @@
+{
+ "version": "0.1-alpha-*",
+ "dependencies": {
+ "Microsoft.AspNet.Diagnostics": "",
+ "Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
+ "Microsoft.AspNet.Abstractions": "0.1-alpha-*"
+ },
+ "configurations": {
+ "net45": {
+ "dependencies": {
+ "Owin": "1.0",
+ "Microsoft.Owin": "2.1.0",
+ "Microsoft.Owin.Hosting": "2.1.0",
+ "Microsoft.Owin.Host.HttpListener": "2.1.0",
+ "Microsoft.AspNet.AppBuilderSupport": "0.1-alpha-*"
+ }
+ },
+ "k10": {
+ "dependencies": {
+ "System.Console": "4.0.0.0",
+ "System.Collections": "4.0.0.0",
+ "System.Diagnostics.Debug": "4.0.10.0",
+ "System.Diagnostics.Tools": "4.0.0.0",
+ "System.Globalization": "4.0.10.0",
+ "System.IO": "4.0.0.0",
+ "System.IO.FileSystem": "4.0.0.0",
+ "System.IO.FileSystem.Primitives": "4.0.0.0",
+ "System.Linq": "4.0.0.0",
+ "System.Reflection": "4.0.10.0",
+ "System.Resources.ResourceManager": "4.0.0.0",
+ "System.Runtime": "4.0.20.0",
+ "System.Runtime.Extensions": "4.0.10.0",
+ "System.Runtime.InteropServices": "4.0.10.0",
+ "System.Text.Encoding": "4.0.10.0",
+ "System.Threading.Tasks": "4.0.0.0"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/WelcomePageSample/Program.cs b/samples/WelcomePageSample/Program.cs
new file mode 100644
index 0000000000..0360e87f60
--- /dev/null
+++ b/samples/WelcomePageSample/Program.cs
@@ -0,0 +1,28 @@
+using System;
+#if NET45
+using System.Diagnostics;
+using Microsoft.Owin.Hosting;
+#endif
+
+namespace WelcomePageSample
+{
+ public class Program
+ {
+ const string baseUrl = "http://localhost:9001/";
+
+ public static void Main()
+ {
+#if NET45
+ using (WebApp.Start(new StartOptions(baseUrl)))
+ {
+ Console.WriteLine("Listening at {0}", baseUrl);
+ Process.Start(baseUrl);
+ Console.WriteLine("Press any key to exit");
+ Console.ReadKey();
+ }
+#else
+ Console.WriteLine("Hello World");
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/WelcomePageSample/Startup.cs b/samples/WelcomePageSample/Startup.cs
new file mode 100644
index 0000000000..0b08dfb71b
--- /dev/null
+++ b/samples/WelcomePageSample/Startup.cs
@@ -0,0 +1,22 @@
+#if NET45
+using Microsoft.AspNet;
+using Microsoft.AspNet.Abstractions;
+using Owin;
+
+namespace WelcomePageSample
+{
+ public class Startup
+ {
+ public void Configuration(IAppBuilder app)
+ {
+ // Temporary bridge from katana to Owin
+ app.UseBuilder(ConfigurePK);
+ }
+
+ private void ConfigurePK(IBuilder builder)
+ {
+ builder.UseWelcomePage();
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
new file mode 100644
index 0000000000..f38335b51e
--- /dev/null
+++ b/samples/WelcomePageSample/project.json
@@ -0,0 +1,39 @@
+{
+ "version": "0.1-alpha-*",
+ "dependencies": {
+ "Microsoft.AspNet.Diagnostics": "",
+ "Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
+ "Microsoft.AspNet.Abstractions": "0.1-alpha-*"
+ },
+ "configurations": {
+ "net45": {
+ "dependencies": {
+ "Owin": "1.0",
+ "Microsoft.Owin": "2.1.0",
+ "Microsoft.Owin.Hosting": "2.1.0",
+ "Microsoft.Owin.Host.HttpListener": "2.1.0",
+ "Microsoft.AspNet.AppBuilderSupport": "0.1-alpha-*"
+ }
+ },
+ "k10": {
+ "dependencies": {
+ "System.Console": "4.0.0.0",
+ "System.Collections": "4.0.0.0",
+ "System.Diagnostics.Debug": "4.0.10.0",
+ "System.Diagnostics.Tools": "4.0.0.0",
+ "System.Globalization": "4.0.10.0",
+ "System.IO": "4.0.0.0",
+ "System.IO.FileSystem": "4.0.0.0",
+ "System.IO.FileSystem.Primitives": "4.0.0.0",
+ "System.Linq": "4.0.0.0",
+ "System.Reflection": "4.0.10.0",
+ "System.Resources.ResourceManager": "4.0.0.0",
+ "System.Runtime": "4.0.20.0",
+ "System.Runtime.Extensions": "4.0.10.0",
+ "System.Runtime.InteropServices": "4.0.10.0",
+ "System.Text.Encoding": "4.0.10.0",
+ "System.Threading.Tasks": "4.0.0.0"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/Constants.cs b/src/Microsoft.AspNet.Diagnostics/Constants.cs
new file mode 100644
index 0000000000..468b5aa908
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Constants.cs
@@ -0,0 +1,24 @@
+//
+// Copyright 2011-2013 Microsoft Open Technologies, Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ internal static class Constants
+ {
+ internal const string HostAppMode = "host.AppMode";
+ internal const string DevMode = "development";
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
new file mode 100644
index 0000000000..a68c2ca0a2
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
@@ -0,0 +1,53 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+#if DEBUG
+using System;
+using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Diagnostics;
+
+namespace Microsoft.AspNet
+{
+ ///
+ /// IBuilder extensions for the DiagnosticsPageMiddleware.
+ ///
+ public static class DiagnosticsPageExtensions
+ {
+ ///
+ /// Adds the DiagnosticsPageMiddleware to the pipeline with the given options.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseDiagnosticsPage(this IBuilder builder, DiagnosticsPageOptions options)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException("builder");
+ }
+
+ return builder.Use(next => new DiagnosticsPageMiddleware(next, options).Invoke);
+ }
+
+ ///
+ /// Adds the DiagnosticsPageMiddleware to the pipeline with the given path.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseDiagnosticsPage(this IBuilder builder, PathString path)
+ {
+ return UseDiagnosticsPage(builder, new DiagnosticsPageOptions { Path = path });
+ }
+
+ ///
+ /// Adds the DiagnosticsPageMiddleware to the pipeline.
+ ///
+ ///
+ ///
+ public static IBuilder UseDiagnosticsPage(this IBuilder builder)
+ {
+ return UseDiagnosticsPage(builder, new DiagnosticsPageOptions());
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
new file mode 100644
index 0000000000..7c71a0d745
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
@@ -0,0 +1,48 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+#if DEBUG
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNet.Diagnostics.Views;
+using Microsoft.AspNet.Abstractions;
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// A human readable page with basic debugging actions.
+ ///
+ public class DiagnosticsPageMiddleware
+ {
+ private readonly RequestDelegate _next;
+ private readonly DiagnosticsPageOptions _options;
+
+ ///
+ /// Initializes a new instance of the class
+ ///
+ ///
+ ///
+ public DiagnosticsPageMiddleware(RequestDelegate next, DiagnosticsPageOptions options)
+ {
+ _next = next;
+ _options = options;
+ }
+
+ ///
+ /// Process an individual request.
+ ///
+ ///
+ ///
+ public Task Invoke(HttpContext context)
+ {
+ if (!_options.Path.HasValue || _options.Path == context.Request.Path)
+ {
+ var page = new DiagnosticsPage();
+ page.Execute(context);
+ return Task.FromResult(0);
+ }
+ return _next(context);
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
new file mode 100644
index 0000000000..3ba61f8ee0
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
@@ -0,0 +1,20 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+#if DEBUG
+
+using Microsoft.AspNet.Abstractions;
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// Options for the DiagnosticsPageMiddleware
+ ///
+ public class DiagnosticsPageOptions
+ {
+ ///
+ /// Specifies which requests paths will be responded to. Exact matches only. Leave null to handle all requests.
+ ///
+ public PathString Path { get; set; }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
new file mode 100644
index 0000000000..4f3576538a
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Diagnostics;
+
+namespace Microsoft.AspNet
+{
+ ///
+ /// IBuilder extension methods for the ErrorPageMiddleware.
+ ///
+ public static class ErrorPageExtensions
+ {
+ ///
+ /// Captures synchronous and asynchronous exceptions from the pipeline and generates HTML error responses.
+ /// Full error details are only displayed by default if 'host.AppMode' is set to 'development' in the IBuilder.Properties.
+ ///
+ ///
+ ///
+ public static IBuilder UseErrorPage(this IBuilder builder)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException("builder");
+ }
+
+ return builder.UseErrorPage(new ErrorPageOptions());
+ }
+
+ ///
+ /// Captures synchronous and asynchronous exceptions from the pipeline and generates HTML error responses.
+ /// Full error details are only displayed by default if 'host.AppMode' is set to 'development' in the IBuilder.Properties.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseErrorPage(this IBuilder builder, ErrorPageOptions options)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException("builder");
+ }
+ /* TODO: Development, Staging, or Production
+ string appMode = new AppProperties(builder.Properties).Get(Constants.HostAppMode);
+ bool isDevMode = string.Equals(Constants.DevMode, appMode, StringComparison.Ordinal);*/
+ bool isDevMode = true;
+ return builder.Use(next => new ErrorPageMiddleware(next, options, isDevMode).Invoke);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
new file mode 100644
index 0000000000..10f9fdecac
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
@@ -0,0 +1,200 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNet.Diagnostics.Views;
+using Microsoft.AspNet.Abstractions;
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// Captures synchronous and asynchronous exceptions from the pipeline and generates HTML error responses.
+ ///
+ public class ErrorPageMiddleware
+ {
+ private readonly RequestDelegate _next;
+ private readonly ErrorPageOptions _options;
+
+ ///
+ /// Initializes a new instance of the class
+ ///
+ ///
+ ///
+ ///
+ public ErrorPageMiddleware(RequestDelegate next, ErrorPageOptions options, bool isDevMode)
+ {
+ if (next == null)
+ {
+ throw new ArgumentNullException("next");
+ }
+ if (options == null)
+ {
+ throw new ArgumentNullException("options");
+ }
+ if (isDevMode)
+ {
+ options.SetDefaultVisibility(isVisible: true);
+ }
+ _next = next;
+ _options = options;
+ }
+
+ ///
+ /// Process an individual request.
+ ///
+ ///
+ ///
+ [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "For diagnostics")]
+ public async Task Invoke(HttpContext context)
+ {
+ try
+ {
+ await _next(context);
+ }
+ catch (Exception ex)
+ {
+ try
+ {
+ DisplayException(context, ex);
+ return;
+ }
+ catch (Exception)
+ {
+ // If there's a Exception while generating the error page, re-throw the original exception.
+ }
+ throw;
+ }
+ }
+
+ // Assumes the response headers have not been sent. If they have, still attempt to write to the body.
+ private void DisplayException(HttpContext context, Exception ex)
+ {
+ var request = context.Request;
+
+ ErrorPageModel model = new ErrorPageModel()
+ {
+ Options = _options,
+ };
+
+ if (_options.ShowExceptionDetails)
+ {
+ model.ErrorDetails = GetErrorDetails(ex, _options.ShowSourceCode).Reverse();
+ }
+ if (_options.ShowQuery)
+ {
+ model.Query = request.Query;
+ }/* TODO:
+ if (_options.ShowCookies)
+ {
+ model.Cookies = request.Cookies;
+ }*/
+ if (_options.ShowHeaders)
+ {
+ model.Headers = request.Headers;
+ }/* TODO:
+ if (_options.ShowEnvironment)
+ {
+ model.Environment = context;
+ }*/
+
+ var errorPage = new ErrorPage() { Model = model };
+ errorPage.Execute(context);
+ }
+
+ private IEnumerable GetErrorDetails(Exception ex, bool showSource)
+ {
+ for (Exception scan = ex; scan != null; scan = scan.InnerException)
+ {
+ yield return new ErrorDetails
+ {
+ Error = scan,
+ StackFrames = StackFrames(scan, showSource)
+ };
+ }
+ }
+
+ private IEnumerable StackFrames(Exception ex, bool showSource)
+ {
+ var stackTrace = ex.StackTrace;
+ if (!string.IsNullOrEmpty(stackTrace))
+ {
+ var heap = new Chunk { Text = stackTrace + Environment.NewLine, End = stackTrace.Length + 2 };
+ for (Chunk line = heap.Advance(Environment.NewLine); line.HasValue; line = heap.Advance(Environment.NewLine))
+ {
+ yield return StackFrame(line, showSource);
+ }
+ }
+ }
+
+ private StackFrame StackFrame(Chunk line, bool showSource)
+ {
+ line.Advance(" at ");
+ string function = line.Advance(" in ").ToString();
+ string file = line.Advance(":line ").ToString();
+ int lineNumber = line.ToInt32();
+
+ return string.IsNullOrEmpty(file)
+ ? LoadFrame(line.ToString(), string.Empty, 0, showSource)
+ : LoadFrame(function, file, lineNumber, showSource);
+ }
+
+ private StackFrame LoadFrame(string function, string file, int lineNumber, bool showSource)
+ {
+ var frame = new StackFrame { Function = function, File = file, Line = lineNumber };
+ if (showSource && File.Exists(file))
+ {
+ IEnumerable code = File.ReadLines(file);
+ frame.PreContextLine = Math.Max(lineNumber - _options.SourceCodeLineCount, 1);
+ frame.PreContextCode = code.Skip(frame.PreContextLine - 1).Take(lineNumber - frame.PreContextLine).ToArray();
+ frame.ContextCode = code.Skip(lineNumber - 1).FirstOrDefault();
+ frame.PostContextCode = code.Skip(lineNumber).Take(_options.SourceCodeLineCount).ToArray();
+ }
+ return frame;
+ }
+
+ internal class Chunk
+ {
+ public string Text { get; set; }
+ public int Start { get; set; }
+ public int End { get; set; }
+
+ public bool HasValue
+ {
+ get { return 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 && Int32.TryParse(
+ Text.Substring(Start, End - Start),
+ NumberStyles.Integer,
+ CultureInfo.InvariantCulture,
+ out value) ? value : 0;
+ }
+ }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageOptions.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageOptions.cs
new file mode 100644
index 0000000000..fd38bf0aee
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageOptions.cs
@@ -0,0 +1,117 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// Options for the ErrorPageMiddleware
+ ///
+ public class ErrorPageOptions
+ {
+ private bool _defaultVisibility;
+
+ private bool? _showExceptionDetails;
+ private bool? _showSourceCode;
+ private bool? _showQuery;
+ private bool? _showCookies;
+ private bool? _showHeaders;
+ private bool? _showEnvironment;
+
+ ///
+ /// Create an instance with the default options settings.
+ ///
+ public ErrorPageOptions()
+ {
+ SourceCodeLineCount = 6;
+ }
+
+ ///
+ /// Returns a new instance of ErrorPageOptions with all visibility options enabled by default.
+ ///
+ public static ErrorPageOptions ShowAll
+ {
+ get
+ {
+ // We don't use a static instance because it's mutable.
+ return new ErrorPageOptions()
+ {
+ ShowExceptionDetails = true,
+ ShowSourceCode = true,
+ ShowQuery = true,
+ ShowCookies = true,
+ ShowHeaders = true,
+ ShowEnvironment = true,
+ };
+ }
+ }
+
+ ///
+ /// Enables the display of exception types, messages, and stack traces.
+ ///
+ public bool ShowExceptionDetails
+ {
+ get { return _showExceptionDetails ?? _defaultVisibility; }
+ set { _showExceptionDetails = value; }
+ }
+
+ ///
+ /// Enabled the display of local source code around exception stack frames.
+ ///
+ public bool ShowSourceCode
+ {
+ get { return _showSourceCode ?? _defaultVisibility; }
+ set { _showSourceCode = value; }
+ }
+
+ ///
+ /// Determines how many lines of code to include before and after the line of code
+ /// present in an exception's stack frame. Only applies when symbols are available and
+ /// source code referenced by the exception stack trace is present on the server.
+ ///
+ public int SourceCodeLineCount { get; set; }
+
+ ///
+ /// Enables the enumeration of any parsed query values.
+ ///
+ public bool ShowQuery
+ {
+ get { return _showQuery ?? _defaultVisibility; }
+ set { _showQuery = value; }
+ }
+
+ ///
+ /// Enables the enumeration of any parsed request cookies.
+ ///
+ public bool ShowCookies
+ {
+ get { return _showCookies ?? _defaultVisibility; }
+ set { _showCookies = value; }
+ }
+
+ ///
+ /// Enables the enumeration of the request headers.
+ ///
+ public bool ShowHeaders
+ {
+ get { return _showHeaders ?? _defaultVisibility; }
+ set { _showHeaders = value; }
+ }
+
+ ///
+ /// Enables the enumeration of the OWIN environment values.
+ ///
+ public bool ShowEnvironment
+ {
+ get { return _showEnvironment ?? _defaultVisibility; }
+ set { _showEnvironment = value; }
+ }
+
+ ///
+ /// Sets the default visibility for options not otherwise specified.
+ ///
+ ///
+ public void SetDefaultVisibility(bool isVisible)
+ {
+ _defaultVisibility = isVisible;
+ }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Resources.Designer.cs b/src/Microsoft.AspNet.Diagnostics/Resources.Designer.cs
new file mode 100644
index 0000000000..c0b4db6534
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Resources.Designer.cs
@@ -0,0 +1,315 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.33440
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Microsoft.AspNet.Diagnostics {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.AspNet.Diagnostics.Resources", System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(Resources)).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You are seeing this page because DiagnosticsPageMiddleware was added to your web application..
+ ///
+ internal static string DiagnosticsPageHtml_Information {
+ get {
+ return ResourceManager.GetString("DiagnosticsPageHtml_Information", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Test Error Message.
+ ///
+ internal static string DiagnosticsPageHtml_TestErrorMessage {
+ get {
+ return ResourceManager.GetString("DiagnosticsPageHtml_TestErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Test Error Page.
+ ///
+ internal static string DiagnosticsPageHtml_TestErrorSection {
+ get {
+ return ResourceManager.GetString("DiagnosticsPageHtml_TestErrorSection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Diagnostics Page.
+ ///
+ internal static string DiagnosticsPageHtml_Title {
+ get {
+ return ResourceManager.GetString("DiagnosticsPageHtml_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cookies.
+ ///
+ internal static string ErrorPageHtml_CookiesButton {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_CookiesButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Enable development mode or ErrorPageOptions.ShowExceptionDetails for additional information..
+ ///
+ internal static string ErrorPageHtml_EnableShowExceptions {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_EnableShowExceptions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Environment.
+ ///
+ internal static string ErrorPageHtml_EnvironmentButton {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_EnvironmentButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Headers.
+ ///
+ internal static string ErrorPageHtml_HeadersButton {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_HeadersButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No cookie data..
+ ///
+ internal static string ErrorPageHtml_NoCookieData {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_NoCookieData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No header data..
+ ///
+ internal static string ErrorPageHtml_NoHeaderData {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_NoHeaderData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No QueryString data..
+ ///
+ internal static string ErrorPageHtml_NoQueryStringData {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_NoQueryStringData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Query.
+ ///
+ internal static string ErrorPageHtml_QueryButton {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_QueryButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Stack.
+ ///
+ internal static string ErrorPageHtml_StackButton {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_StackButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal Server Error.
+ ///
+ internal static string ErrorPageHtml_Title {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An unhandled exception occurred while processing the request..
+ ///
+ internal static string ErrorPageHtml_UnhandledException {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_UnhandledException", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unknown location.
+ ///
+ internal static string ErrorPageHtml_UnknownLocation {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_UnknownLocation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Value.
+ ///
+ internal static string ErrorPageHtml_ValueColumn {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_ValueColumn", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Variable.
+ ///
+ internal static string ErrorPageHtml_VariableColumn {
+ get {
+ return ResourceManager.GetString("ErrorPageHtml_VariableColumn", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The path must start with a '/'..
+ ///
+ internal static string Exception_PathMustStartWithSlash {
+ get {
+ return ResourceManager.GetString("Exception_PathMustStartWithSlash", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Welcome.
+ ///
+ internal static string WelcomeHeader {
+ get {
+ return ResourceManager.GetString("WelcomeHeader", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Learn more about the Microsoft OWIN components.
+ ///
+ internal static string WelcomeLearnMicrosoftOwin {
+ get {
+ return ResourceManager.GetString("WelcomeLearnMicrosoftOwin", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Learn more about OWIN.
+ ///
+ internal static string WelcomeLearnOwin {
+ get {
+ return ResourceManager.GetString("WelcomeLearnOwin", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Browser.
+ ///
+ internal static string WelcomePageImageText_Browser {
+ get {
+ return ResourceManager.GetString("WelcomePageImageText_Browser", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Learn More.
+ ///
+ internal static string WelcomePageImageText_LearnMore {
+ get {
+ return ResourceManager.GetString("WelcomePageImageText_LearnMore", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Light Bulb.
+ ///
+ internal static string WelcomePageImageText_LightBulb {
+ get {
+ return ResourceManager.GetString("WelcomePageImageText_LightBulb", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Skyline.
+ ///
+ internal static string WelcomePageImageText_Skyline {
+ get {
+ return ResourceManager.GetString("WelcomePageImageText_Skyline", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your OWIN application has been successfully started.
+ ///
+ internal static string WelcomeStarted {
+ get {
+ return ResourceManager.GetString("WelcomeStarted", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your OWIN application has been successfully started..
+ ///
+ internal static string WelcomeTitle {
+ get {
+ return ResourceManager.GetString("WelcomeTitle", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Resources.resx b/src/Microsoft.AspNet.Diagnostics/Resources.resx
new file mode 100644
index 0000000000..b58d66477f
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Resources.resx
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ You are seeing this page because DiagnosticsPageMiddleware was added to your web application.
+
+
+ Test Error Message
+
+
+ Test Error Page
+
+
+ Diagnostics Page
+
+
+ Cookies
+ as in http request cookies
+
+
+ Enable development mode or ErrorPageOptions.ShowExceptionDetails for additional information.
+
+
+ Environment
+ as in OWIN environment dictionary
+
+
+ Headers
+ as in http request headers
+
+
+ No cookie data.
+
+
+ No header data.
+
+
+ No QueryString data.
+
+
+ Query
+ as in a request url query string
+
+
+ Stack
+ as in an exception's call stack
+
+
+ Internal Server Error
+
+
+ An unhandled exception occurred while processing the request.
+
+
+ Unknown location
+ when a stack source code location is not known
+
+
+ Value
+ as in dictionary value
+
+
+ Variable
+ as in dictionary key
+
+
+ The path must start with a '/'.
+
+
+ Welcome
+
+
+ Learn more about the Microsoft OWIN components
+
+
+ Learn more about OWIN
+
+
+ Browser
+
+
+ Learn More
+
+
+ Light Bulb
+
+
+ Skyline
+
+
+ Your OWIN application has been successfully started
+
+
+ Your OWIN application has been successfully started.
+
+
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
new file mode 100644
index 0000000000..bfcd2c93ee
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
@@ -0,0 +1,442 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.Abstractions;
+using System;
+using System.Globalization;
+using System.IO;
+using System.Net;
+
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+ ///
+ /// Infrastructure
+ ///
+ public abstract class BaseView
+ {
+ ///
+ /// The request context
+ ///
+ protected HttpContext Context { get; private set; }
+
+ ///
+ /// The request
+ ///
+ protected HttpRequest Request { get; private set; }
+
+ ///
+ /// The response
+ ///
+ protected HttpResponse Response { get; private set; }
+
+ ///
+ /// The output stream
+ ///
+ protected StreamWriter Output { get; private set; }
+
+ ///
+ /// Execute an individual request
+ ///
+ ///
+ public void Execute(HttpContext context)
+ {
+ Context = context;
+ Request = Context.Request;
+ Response = Context.Response;
+ Output = new StreamWriter(Response.Body);
+ Execute();
+ Output.Dispose();
+ }
+
+ ///
+ /// Execute an individual request
+ ///
+ public abstract void Execute();
+
+ ///
+ /// Write the given value directly to the output
+ ///
+ ///
+ protected void WriteLiteral(string value)
+ {
+ Output.Write(value);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1,
+ Tuple, Tuple, bool> part2)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ if (part2 == null)
+ {
+ throw new ArgumentNullException("part2");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(part2.Item1.Item1);
+ Write(part2.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1,
+ Tuple, Tuple, bool> part2,
+ Tuple, Tuple, bool> part3)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ if (part2 == null)
+ {
+ throw new ArgumentNullException("part2");
+ }
+ if (part3 == null)
+ {
+ throw new ArgumentNullException("part3");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(part2.Item1.Item1);
+ Write(part2.Item2.Item1);
+ WriteLiteral(part3.Item1.Item1);
+ Write(part3.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1,
+ Tuple, Tuple, bool> part2,
+ Tuple, Tuple, bool> part3,
+ Tuple, Tuple, bool> part4)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ if (part2 == null)
+ {
+ throw new ArgumentNullException("part2");
+ }
+ if (part3 == null)
+ {
+ throw new ArgumentNullException("part3");
+ }
+ if (part4 == null)
+ {
+ throw new ArgumentNullException("part4");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(part2.Item1.Item1);
+ Write(part2.Item2.Item1);
+ WriteLiteral(part3.Item1.Item1);
+ Write(part3.Item2.Item1);
+ WriteLiteral(part4.Item1.Item1);
+ Write(part4.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1,
+ Tuple, Tuple, bool> part2,
+ Tuple, Tuple, bool> part3,
+ Tuple, Tuple, bool> part4,
+ Tuple, Tuple, bool> part5)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ if (part2 == null)
+ {
+ throw new ArgumentNullException("part2");
+ }
+ if (part3 == null)
+ {
+ throw new ArgumentNullException("part3");
+ }
+ if (part4 == null)
+ {
+ throw new ArgumentNullException("part4");
+ }
+ if (part5 == null)
+ {
+ throw new ArgumentNullException("part5");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(part2.Item1.Item1);
+ Write(part2.Item2.Item1);
+ WriteLiteral(part3.Item1.Item1);
+ Write(part3.Item2.Item1);
+ WriteLiteral(part4.Item1.Item1);
+ Write(part4.Item2.Item1);
+ WriteLiteral(part5.Item1.Item1);
+ Write(part5.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void WriteAttribute(
+ string name,
+ Tuple leader,
+ Tuple trailer,
+ Tuple, Tuple, bool> part1,
+ Tuple, Tuple, bool> part2,
+ Tuple, Tuple, bool> part3,
+ Tuple, Tuple, bool> part4,
+ Tuple, Tuple, bool> part5,
+ Tuple, Tuple, bool> part6)
+ {
+ if (name == null)
+ {
+ throw new ArgumentNullException("name");
+ }
+ if (leader == null)
+ {
+ throw new ArgumentNullException("leader");
+ }
+ if (trailer == null)
+ {
+ throw new ArgumentNullException("trailer");
+ }
+ if (part1 == null)
+ {
+ throw new ArgumentNullException("part1");
+ }
+ if (part2 == null)
+ {
+ throw new ArgumentNullException("part2");
+ }
+ if (part3 == null)
+ {
+ throw new ArgumentNullException("part3");
+ }
+ if (part4 == null)
+ {
+ throw new ArgumentNullException("part4");
+ }
+ if (part5 == null)
+ {
+ throw new ArgumentNullException("part5");
+ }
+ if (part6 == null)
+ {
+ throw new ArgumentNullException("part6");
+ }
+ WriteLiteral(leader.Item1);
+ WriteLiteral(part1.Item1.Item1);
+ Write(part1.Item2.Item1);
+ WriteLiteral(part2.Item1.Item1);
+ Write(part2.Item2.Item1);
+ WriteLiteral(part3.Item1.Item1);
+ Write(part3.Item2.Item1);
+ WriteLiteral(part4.Item1.Item1);
+ Write(part4.Item2.Item1);
+ WriteLiteral(part5.Item1.Item1);
+ Write(part5.Item2.Item1);
+ WriteLiteral(part6.Item1.Item1);
+ Write(part6.Item2.Item1);
+ WriteLiteral(trailer.Item1);
+ }
+
+ ///
+ /// Html encode and write
+ ///
+ ///
+ private void WriteEncoded(string value)
+ {
+ Output.Write(WebUtility.HtmlEncode(value));
+ }
+
+ ///
+ /// Convert to string and html encode
+ ///
+ ///
+ protected void Write(object value)
+ {
+ WriteEncoded(Convert.ToString(value, CultureInfo.InvariantCulture));
+ }
+
+ ///
+ /// Html encode and write
+ ///
+ ///
+ protected void Write(string value)
+ {
+ WriteEncoded(value);
+ }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
new file mode 100644
index 0000000000..cd293e7b86
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
@@ -0,0 +1,133 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18213
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Microsoft.AspNet.Diagnostics.Views {
+
+ #line 1 "DiagnosticsPage.cshtml"
+ using System;
+
+ #line default
+ #line hidden
+
+ #line 2 "DiagnosticsPage.cshtml"
+ using System.Globalization;
+
+ #line default
+ #line hidden
+
+
+ public class DiagnosticsPage : Microsoft.AspNet.Diagnostics.Views.BaseView {
+
+#line hidden
+
+ public DiagnosticsPage() {
+ }
+
+ public override void Execute() {
+
+ #line 3 "DiagnosticsPage.cshtml"
+
+ Response.ContentType = "text/html";
+ string error = Request.Query.Get("error");
+ if (!string.IsNullOrWhiteSpace(error))
+ {
+ throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "User requested error '{0}'", error));
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n\r\n\r\n\r\n\r\n \r\n ");
+
+
+ #line 16 "DiagnosticsPage.cshtml"
+ Write(Resources.DiagnosticsPageHtml_Title);
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n\r\n\r\n \r\n
");
+
+
+ #line 20 "DiagnosticsPage.cshtml"
+ Write(Resources.DiagnosticsPageHtml_Title);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
");
+
+
+ #line 21 "DiagnosticsPage.cshtml"
+ Write(Resources.DiagnosticsPageHtml_Information);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
\r\n \r\n
");
+
+
+ #line 24 "DiagnosticsPage.cshtml"
+ Write(Resources.DiagnosticsPageHtml_TestErrorSection);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
(Request.PathBase
+
+ #line default
+ #line hidden
+, 774), false)
+
+ #line 25 "DiagnosticsPage.cshtml"
+, Tuple.Create(Tuple.Create("", 791), Tuple.Create(Request.Path
+
+ #line default
+ #line hidden
+, 791), false)
+, Tuple.Create(Tuple.Create("", 804), Tuple.Create("?error=", 804), true)
+
+ #line 25 "DiagnosticsPage.cshtml"
+, Tuple.Create(Tuple.Create("", 811), Tuple.Create(Resources.DiagnosticsPageHtml_TestErrorMessage
+
+ #line default
+ #line hidden
+, 811), false)
+);
+
+WriteLiteral(">throw InvalidOperationException
\r\n
\r\n\r\n\r\n");
+
+ }
+ }
+}
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cshtml b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cshtml
new file mode 100644
index 0000000000..55b1d06f52
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cshtml
@@ -0,0 +1,28 @@
+@using System
+@using System.Globalization
+@{
+ Response.ContentType = "text/html";
+ string error = Request.Query.Get("error");
+ if (!string.IsNullOrWhiteSpace(error))
+ {
+ throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "User requested error '{0}'", error));
+ }
+}
+
+
+
+
+
+ @Resources.DiagnosticsPageHtml_Title
+
+
+
+
@Resources.DiagnosticsPageHtml_Title
+
@Resources.DiagnosticsPageHtml_Information
+
+
+
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
new file mode 100644
index 0000000000..643ca3bb50
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
@@ -0,0 +1,26 @@
+<#@ template debug="false" hostspecific="true" language="C#" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Web.Razor" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Web.Razor" #>
+<#@ import namespace="System.Web.Razor.Text" #>
+<#@ output extension=".cs" #>
+<#
+var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
+host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
+var engine = new RazorTemplateEngine(host);
+var path = Host.ResolvePath("DiagnosticsPage.cshtml");
+
+var code = engine.GenerateCode(
+ new System.IO.StreamReader(path),
+ "DiagnosticsPage",
+ "Microsoft.Owin.Diagnostics.Views",
+ @"DiagnosticsPage.cshtml");
+
+var provider = new Microsoft.CSharp.CSharpCodeProvider();
+var writer = new System.IO.StringWriter();
+provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
+#>
+<#=writer.ToString()#>
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
new file mode 100644
index 0000000000..b08261c64a
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
@@ -0,0 +1,39 @@
+//
+// Copyright 2011-2013 Microsoft Open Technologies, Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+ ///
+ /// Contains details for individual exception messages.
+ ///
+ public class ErrorDetails
+ {
+ ///
+ /// An individual exception
+ ///
+ public Exception Error { get; set; }
+
+ ///
+ /// The generated stack frames
+ ///
+ public IEnumerable StackFrames { get; set; }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
new file mode 100644
index 0000000000..ed73f65b6c
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
@@ -0,0 +1,1649 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.33440
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Microsoft.AspNet.Diagnostics.Views {
+
+ #line 1 "ErrorPage.cshtml"
+ using System;
+
+ #line default
+ #line hidden
+
+ #line 2 "ErrorPage.cshtml"
+ using System.Globalization;
+
+ #line default
+ #line hidden
+
+ #line 3 "ErrorPage.cshtml"
+ using System.Linq;
+
+ #line default
+ #line hidden
+
+ #line 4 "ErrorPage.cshtml"
+ using Views;
+
+ #line default
+ #line hidden
+
+
+ public class ErrorPage : Microsoft.AspNet.Diagnostics.Views.BaseView {
+
+#line hidden
+
+ #line 6 "ErrorPage.cshtml"
+
+ ///
+ ///
+ ///
+ public Views.ErrorPageModel Model { get; set; }
+
+ #line default
+ #line hidden
+
+
+ public ErrorPage() {
+ }
+
+ public override void Execute() {
+
+ #line 12 "ErrorPage.cshtml"
+
+ Response.StatusCode = 500;
+ // Response.ReasonPhrase = "Internal Server Error";
+ Response.ContentType = "text/html";
+ Response.ContentLength = null; // Clear any prior Content-Length
+ string location = string.Empty;
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n\r\n(System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
+
+ #line default
+ #line hidden
+, 468), false)
+);
+
+WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+
+WriteLiteral(">\r\n \r\n \r\n ");
+
+
+ #line 23 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_Title);
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n \r\n \r\n \r\n ");
+
+
+ #line 29 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_UnhandledException);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 30 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 30 "ErrorPage.cshtml"
+ if (Model.Options.ShowExceptionDetails)
+ {
+ foreach (var errorDetail in Model.ErrorDetails)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 34 "ErrorPage.cshtml"
+ Write(errorDetail.Error.GetType().Name);
+
+
+ #line default
+ #line hidden
+WriteLiteral(": ");
+
+
+ #line 34 "ErrorPage.cshtml"
+ Write(errorDetail.Error.Message);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\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;
+ }/*
+ 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(" ");
+
+
+ #line 49 "ErrorPage.cshtml"
+ Write(location);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" in (firstFrame.File
+
+ #line default
+ #line hidden
+, 1907), false)
+);
+
+WriteLiteral(">");
+
+
+ #line 49 "ErrorPage.cshtml"
+ Write(System.IO.Path.GetFileName(firstFrame.File));
+
+
+ #line default
+ #line hidden
+WriteLiteral(", line ");
+
+
+ #line 49 "ErrorPage.cshtml"
+ Write(firstFrame.Line);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 50 "ErrorPage.cshtml"
+ }
+ else if (!string.IsNullOrEmpty(location))
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 53 "ErrorPage.cshtml"
+ Write(location);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 54 "ErrorPage.cshtml"
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 57 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_UnknownLocation);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 58 "ErrorPage.cshtml"
+ }
+ }
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 63 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_EnableShowExceptions);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 64 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 97 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 97 "ErrorPage.cshtml"
+ if (Model.Options.ShowExceptionDetails)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n
\r\n");
+
+
+ #line 101 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 101 "ErrorPage.cshtml"
+ int tabIndex = 6;
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n");
+
+
+ #line 102 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 102 "ErrorPage.cshtml"
+ foreach (var errorDetail in Model.ErrorDetails)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" - \r\n
");
+
+
+ #line 105 "ErrorPage.cshtml"
+ Write(errorDetail.Error.GetType().Name);
+
+
+ #line default
+ #line hidden
+WriteLiteral(": ");
+
+
+ #line 105 "ErrorPage.cshtml"
+ Write(errorDetail.Error.Message);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n \r\n");
+
+
+ #line 107 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 107 "ErrorPage.cshtml"
+ foreach (var frame in errorDetail.StackFrames)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" - (tabIndex
+
+ #line default
+ #line hidden
+, 4169), false)
+);
+
+WriteLiteral(">\r\n");
+
+
+ #line 110 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 110 "ErrorPage.cshtml"
+ tabIndex++;
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n");
+
+
+ #line 111 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 111 "ErrorPage.cshtml"
+ if (string.IsNullOrEmpty(frame.File))
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
");
+
+
+ #line 113 "ErrorPage.cshtml"
+ Write(frame.Function);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 114 "ErrorPage.cshtml"
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 117 "ErrorPage.cshtml"
+ Write(frame.Function);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" in (frame.File
+
+ #line default
+ #line hidden
+, 4613), false)
+);
+
+WriteLiteral(">");
+
+
+ #line 117 "ErrorPage.cshtml"
+ Write(System.IO.Path.GetFileName(frame.File));
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 118 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n");
+
+
+ #line 120 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 120 "ErrorPage.cshtml"
+ if (frame.Line != 0 && frame.ContextCode != null)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 123 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 123 "ErrorPage.cshtml"
+ if (frame.PreContextCode != null)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
(frame.PreContextLine
+
+ #line default
+ #line hidden
+, 5095), false)
+);
+
+WriteLiteral(" class=\"collapsable\"");
+
+WriteLiteral(">\r\n");
+
+
+ #line 126 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 126 "ErrorPage.cshtml"
+ foreach (var line in frame.PreContextCode)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" - ");
+
+
+ #line 128 "ErrorPage.cshtml"
+ Write(line);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 129 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 131 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n
(frame.Line
+
+ #line default
+ #line hidden
+, 5592), false)
+);
+
+WriteLiteral(" class=\"highlight\"");
+
+WriteLiteral(">\r\n - ");
+
+
+ #line 134 "ErrorPage.cshtml"
+ Write(frame.ContextCode);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n\r\n");
+
+
+ #line 136 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 136 "ErrorPage.cshtml"
+ if (frame.PostContextCode != null)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
(frame.Line + 1
+
+ #line default
+ #line hidden
+, 5909), false)
+);
+
+WriteLiteral(" class=\"collapsable\"");
+
+WriteLiteral(">\r\n");
+
+
+ #line 139 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 139 "ErrorPage.cshtml"
+ foreach (var line in frame.PostContextCode)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" - ");
+
+
+ #line 141 "ErrorPage.cshtml"
+ Write(line);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 142 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 144 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 146 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 148 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n \r\n");
+
+
+ #line 151 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
\r\n");
+
+
+ #line 154 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 155 "ErrorPage.cshtml"
+ if (Model.Options.ShowQuery)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 158 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 158 "ErrorPage.cshtml"
+ if (Model.Query.Any())
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n \r\n " +
+" \r\n | ");
+
+
+ #line 163 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_VariableColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 164 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_ValueColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n \r\n " +
+" \r\n");
+
+
+ #line 168 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 168 "ErrorPage.cshtml"
+ foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
+ {
+ foreach (var v in kv.Value)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n " +
+" | ");
+
+
+ #line 173 "ErrorPage.cshtml"
+ Write(kv.Key);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 174 "ErrorPage.cshtml"
+ Write(v);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n");
+
+
+ #line 176 "ErrorPage.cshtml"
+ }
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n
\r\n");
+
+
+ #line 180 "ErrorPage.cshtml"
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
");
+
+
+ #line 183 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_NoQueryStringData);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 184 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 186 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 187 "ErrorPage.cshtml"
+ if (Model.Options.ShowCookies)
+ {
+ /*
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 190 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 190 "ErrorPage.cshtml"
+ if (Model.Cookies.Any())
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n \r\n " +
+" \r\n | ");
+
+
+ #line 195 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_VariableColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 196 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_ValueColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n \r\n " +
+" \r\n");
+
+
+ #line 200 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 200 "ErrorPage.cshtml"
+ foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n | ");
+
+
+ #line 203 "ErrorPage.cshtml"
+ Write(kv.Key);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 204 "ErrorPage.cshtml"
+ Write(kv.Value);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n");
+
+
+ #line 206 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n
\r\n");
+
+
+ #line 209 "ErrorPage.cshtml"
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral("
");
+
+
+ #line 212 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_NoCookieData);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+
+
+ #line 213 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n");
+ */
+
+ #line 215 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 216 "ErrorPage.cshtml"
+ if (Model.Options.ShowHeaders)
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n");
+
+
+ #line 247 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" ");
+
+
+ #line 248 "ErrorPage.cshtml"
+ if (Model.Options.ShowEnvironment)
+ {
+ /*
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n
\r\n \r\n " +
+"\r\n | ");
+
+
+ #line 254 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_VariableColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 255 "ErrorPage.cshtml"
+ Write(Resources.ErrorPageHtml_ValueColumn);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n \r\n " +
+" \r\n");
+
+
+ #line 259 "ErrorPage.cshtml"
+
+
+ #line default
+ #line hidden
+
+ #line 259 "ErrorPage.cshtml"
+ foreach (var kv in Model.Environment.OrderBy(kv => kv.Key))
+ {
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n | ");
+
+
+ #line 262 "ErrorPage.cshtml"
+ Write(kv.Key);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n ");
+
+
+ #line 263 "ErrorPage.cshtml"
+ Write(kv.Value);
+
+
+ #line default
+ #line hidden
+WriteLiteral(" | \r\n
\r\n");
+
+
+ #line 265 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n
\r\n
\r\n");
+
+ */
+ #line 269 "ErrorPage.cshtml"
+ }
+
+
+ #line default
+ #line hidden
+WriteLiteral(" \r\n \r\n \r\n\r\n");
+
+ }
+ }
+}
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
new file mode 100644
index 0000000000..d280bf966e
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
@@ -0,0 +1,281 @@
+@using System
+@using System.Globalization
+@using System.Linq
+@using Views
+@functions
+{
+ ///
+ ///
+ ///
+ public Views.ErrorPageModel Model { get; set; }
+}
+@{
+ Response.StatusCode = 500;
+ // TODO: Response.ReasonPhrase = "Internal Server Error";
+ Response.ContentType = "text/html";
+ Response.ContentLength = null; // Clear any prior Content-Length
+ string location = string.Empty;
+}
+
+
+
+
+ @Resources.ErrorPageHtml_Title
+
+
+
+ @Resources.ErrorPageHtml_UnhandledException
+ @if (Model.Options.ShowExceptionDetails)
+ {
+ foreach (var errorDetail in Model.ErrorDetails)
+ {
+ @errorDetail.Error.GetType().Name: @errorDetail.Error.Message
+ {
+ 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;
+ }*/
+ }
+ if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
+ {
+ @location in @System.IO.Path.GetFileName(firstFrame.File), line @firstFrame.Line
+ }
+ else if (!string.IsNullOrEmpty(location))
+ {
+ @location
+ }
+ else
+ {
+ @Resources.ErrorPageHtml_UnknownLocation
+ }
+ }
+ }
+ else
+ {
+ @Resources.ErrorPageHtml_EnableShowExceptions
+ }
+
+ @if (Model.Options.ShowExceptionDetails)
+ {
+
+
+ @{ int tabIndex = 6; }
+ @foreach (var errorDetail in Model.ErrorDetails)
+ {
+ -
+
@errorDetail.Error.GetType().Name: @errorDetail.Error.Message
+
+ @foreach (var frame in errorDetail.StackFrames)
+ {
+ -
+ @{ tabIndex++; }
+ @if (string.IsNullOrEmpty(frame.File))
+ {
+
@frame.Function
+ }
+ else
+ {
+ @frame.Function in @System.IO.Path.GetFileName(frame.File)
+ }
+
+ @if (frame.Line != 0 && frame.ContextCode != null)
+ {
+
+ @if (frame.PreContextCode != null)
+ {
+
+ @foreach (var line in frame.PreContextCode)
+ {
+ - @line
+ }
+
+ }
+
+
+ - @frame.ContextCode
+
+ @if (frame.PostContextCode != null)
+ {
+
+ @foreach (var line in frame.PostContextCode)
+ {
+ - @line
+ }
+
+ }
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ @if (Model.Options.ShowQuery)
+ {
+
+ @if (Model.Query.Any())
+ {
+
+
+
+ | @Resources.ErrorPageHtml_VariableColumn |
+ @Resources.ErrorPageHtml_ValueColumn |
+
+
+
+ @foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
+ {
+ foreach (var v in kv.Value)
+ {
+
+ | @kv.Key |
+ @v |
+
+ }
+ }
+
+
+ }
+ else
+ {
+
@Resources.ErrorPageHtml_NoQueryStringData
+ }
+
+ }
+ @if (Model.Options.ShowCookies)
+ {
+ /* TODO:
+
+ @if (Model.Cookies.Any())
+ {
+
+
+
+ | @Resources.ErrorPageHtml_VariableColumn |
+ @Resources.ErrorPageHtml_ValueColumn |
+
+
+
+ @foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
+ {
+
+ | @kv.Key |
+ @kv.Value |
+
+ }
+
+
+ }
+ else
+ {
+
@Resources.ErrorPageHtml_NoCookieData
+ }
+
+ */
+ }
+ @if (Model.Options.ShowHeaders)
+ {
+
+ }
+ @if (Model.Options.ShowEnvironment)
+ {
+ /* TODO:
+
+
+
+
+ | @Resources.ErrorPageHtml_VariableColumn |
+ @Resources.ErrorPageHtml_ValueColumn |
+
+
+
+ @foreach (var kv in Model.Environment.OrderBy(kv => kv.Key))
+ {
+
+ | @kv.Key |
+ @kv.Value |
+
+ }
+
+
+
+ */
+ }
+
+
+
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.css b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.css
new file mode 100644
index 0000000000..d54619f7f7
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.css
@@ -0,0 +1,172 @@
+body {
+ font-family: 'Segoe UI',Tahoma,Arial,Helvetica,sans-serif;
+ font-size: .813em;
+ line-height: 1.4em;
+ color: #222;
+}
+
+h1, h2, h3, h4, h5 {
+ /*font-family: 'Segoe UI',Tahoma,Arial,Helvetica,sans-serif;*/
+ font-weight: 100;
+}
+
+h1 {
+ color: #44525e;
+ margin: 15px 0 15px 0;
+}
+
+h2 {
+ margin: 10px 5px 0 0;
+}
+
+h3 {
+ color: #363636;
+ margin: 5px 5px 0 0;
+}
+
+code {
+ font-family: consolas, "Courier New", courier, monospace;
+}
+
+body .titleerror {
+ padding: 3px;
+}
+
+body .location {
+ margin: 3px 0 10px 30px;
+}
+
+#header {
+ font-size: 18px;
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-top: 15px;
+ padding-bottom: 15px;
+ border-top: 1px #ddd solid;
+ border-bottom: 1px #ddd solid;
+ margin-bottom: 0px;
+}
+
+#header li {
+ display: inline;
+ margin: 5px;
+ padding: 5px;
+ color: #a0a0a0;
+}
+
+#header li:hover {
+ background: #A9E4F9;
+ color: #fff;
+}
+
+#header li.selected {
+ background: #44C5F2;
+ color: #fff;
+}
+
+#stackpage ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+ /*border-bottom: 1px #ddd solid;*/
+}
+
+#stackpage .stackerror {
+ padding: 5px;
+ border-bottom: 1px #ddd solid;
+}
+
+#stackpage .stackerror:hover {
+ background-color: #f0f0f0;
+}
+
+#stackpage .frame:hover {
+ background-color: #f0f0f0;
+ text-decoration: none;
+}
+
+#stackpage .frame {
+ padding: 2px;
+ margin: 0 0 0 30px;
+ border-bottom: 1px #ddd solid;
+}
+
+#stackpage .frame h3 {
+ padding: 5px;
+ margin: 0;
+}
+
+#stackpage .source {
+ padding: 0px;
+}
+
+#stackpage .source ol li {
+ font-family: consolas, "Courier New", courier, monospace;
+ white-space: pre;
+}
+
+#stackpage .source ol.highlight li {
+ /*color: #e22;*/
+ /*font-weight: bold;*/
+}
+
+#stackpage .source ol.highlight li span {
+ /*color: #000;*/
+}
+
+#stackpage .frame:hover .source ol.highlight li span {
+ color: #fff;
+ background: #B20000;
+}
+
+#stackpage .source ol.collapsable li {
+ color: #888;
+}
+
+#stackpage .source ol.collapsable li span {
+ color: #606060;
+}
+
+.page table {
+ border-collapse: separate;
+ border-spacing: 0;
+ margin: 0 0 20px;
+}
+
+.page th {
+ vertical-align: bottom;
+ padding: 10px 5px 5px 5px;
+ font-weight: 400;
+ color: #a0a0a0;
+ text-align: left;
+}
+
+.page td {
+ padding: 3px 10px;
+}
+
+.page th, .page td {
+ border-right: 1px #ddd solid;
+ border-bottom: 1px #ddd solid;
+ border-left: 1px transparent solid;
+ border-top: 1px transparent solid;
+ box-sizing: border-box;
+}
+
+.page th:last-child, .page td:last-child {
+ border-right: 1px transparent solid;
+}
+
+.page td.length {
+ text-align: right;
+}
+
+a {
+ color: #1ba1e2;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #13709e;
+ text-decoration: underline;
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
new file mode 100644
index 0000000000..f00df0918c
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
@@ -0,0 +1,36 @@
+
+(function ($) {
+ $('.collapsable').hide();
+ $('.page').hide();
+ $('#stackpage').show();
+
+ $('.frame').click(function () {
+ $(this).children('.source').children('.collapsable').toggle('fast');
+ });
+
+ $('.frame').keypress(function (e) {
+ if (e.which == 13) {
+ $(this).children('.source').children('.collapsable').toggle('fast');
+ }
+ });
+
+ $('#header li').click(function () {
+
+ var unselected = $('#header .selected').removeClass('selected').attr('id');
+ var selected = $(this).addClass('selected').attr('id');
+
+ $('#' + unselected + 'page').hide();
+ $('#' + selected + 'page').show('fast');
+ });
+
+ $('#header li').keypress(function (e) {
+ if (e.which == 13) {
+ var unselected = $('#header .selected').removeClass('selected').attr('id');
+ var selected = $(this).addClass('selected').attr('id');
+
+ $('#' + unselected + 'page').hide();
+ $('#' + selected + 'page').show('fast');
+ }
+ });
+
+})(jQuery);
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
new file mode 100644
index 0000000000..ca629b1435
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
@@ -0,0 +1,51 @@
+<#@ template debug="false" hostspecific="true" language="C#" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Web.Razor" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Globalization" #>
+<#@ import namespace="System.IO" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Web.Razor" #>
+<#@ import namespace="System.Web.Razor.Text" #>
+<#@ output extension=".cs" #>
+<#
+var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
+host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
+var engine = new RazorTemplateEngine(host);
+var path = Host.ResolvePath("ErrorPage.cshtml");
+
+var code = engine.GenerateCode(
+ new System.IO.StreamReader(path),
+ "ErrorPage",
+ "Microsoft.Owin.Diagnostics.Views",
+ @"ErrorPage.cshtml");
+
+var provider = new Microsoft.CSharp.CSharpCodeProvider();
+var writer = new System.IO.StringWriter();
+provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
+var source = writer.ToString();
+var startIndex = 0;
+while(startIndex < source.Length)
+{
+ var startMatch = @"Write(@""[[";
+ var startCode = @"WriteLiteral(@""";
+ var endMatch = @"]]"");";
+ var endCode = @""");";
+ startIndex = source.IndexOf(startMatch, startIndex);
+ if (startIndex == -1)
+ {
+ break;
+ }
+ var endIndex = source.IndexOf(endMatch, startIndex);
+ if (endIndex == -1)
+ {
+ break;
+ }
+ var fileName = source.Substring(startIndex + startMatch.Length, endIndex - (startIndex + startMatch.Length));
+ var replacement = File.ReadAllText(Host.ResolvePath(fileName)).Replace("\"", "\"\"");
+ source = source.Substring(0, startIndex) + startCode + replacement + endCode + source.Substring(endIndex + endMatch.Length);
+ startIndex = startIndex + startCode.Length + replacement.Length + endCode.Length;
+ }
+#>
+<#=source#>
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
new file mode 100644
index 0000000000..cb2f5f63c8
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.Abstractions;
+using System;
+using System.Collections.Generic;
+
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+ ///
+ /// Holds data to be displayed on the error page.
+ ///
+ public class ErrorPageModel
+ {
+ ///
+ /// Options for what output to display.
+ ///
+ public ErrorPageOptions Options { get; set; }
+
+ ///
+ /// Detailed information about each exception in the stack
+ ///
+ public IEnumerable ErrorDetails { get; set; }
+
+ ///
+ /// Parsed query data
+ ///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Model class contains collection")]
+ public IReadableStringCollection Query { get; set; }
+
+ /* TODO:
+ ///
+ /// Request cookies
+ ///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Model class contains collection")]
+ public RequestCookieCollection Cookies { get; set; }
+ */
+ ///
+ /// Request headers
+ ///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Model class contains collection")]
+ public IDictionary Headers { get; set; }
+ /* TODO:
+ ///
+ /// The request environment
+ ///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Model class contains collection")]
+ public HttpContext Environment { get; set; }
+ */
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/StackFrame.cs b/src/Microsoft.AspNet.Diagnostics/Views/StackFrame.cs
new file mode 100644
index 0000000000..5f962ccefb
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/StackFrame.cs
@@ -0,0 +1,47 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System.Collections.Generic;
+
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+ ///
+ /// Detailed exception stack information used to generate a view
+ ///
+ public class StackFrame
+ {
+ ///
+ /// Function containing instruction
+ ///
+ public string Function { get; set; }
+
+ ///
+ /// File containing the instruction
+ ///
+ public string File { get; set; }
+
+ ///
+ /// The line number of the instruction
+ ///
+ public int Line { get; set; }
+
+ ///
+ /// The line preceeding the frame line
+ ///
+ public int PreContextLine { get; set; }
+
+ ///
+ ///
+ ///
+ public IEnumerable PreContextCode { get; set; }
+
+ ///
+ ///
+ ///
+ public string ContextCode { get; set; }
+
+ ///
+ ///
+ ///
+ public IEnumerable PostContextCode { get; set; }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
new file mode 100644
index 0000000000..5c22877b46
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
@@ -0,0 +1,3953 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34006
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Microsoft.AspNet.Diagnostics.Views {
+
+ #line 1 "WelcomePage.cshtml"
+ using System;
+
+ #line default
+ #line hidden
+
+
+ public class WelcomePage : Microsoft.AspNet.Diagnostics.Views.BaseView {
+
+#line hidden
+
+ public WelcomePage() {
+ }
+
+ public override void Execute() {
+
+ #line 2 "WelcomePage.cshtml"
+
+ Response.ContentType = "text/html";
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n\r\n(System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
+
+ #line default
+ #line hidden
+, 92), false)
+);
+
+WriteLiteral(">\r\n\r\n \r\n ");
+
+
+ #line 9 "WelcomePage.cshtml"
+ Write(Resources.WelcomeTitle);
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n \r\n \r\n\r\n\r\n \r\n
\r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 250499), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 250541), Tuple.Create("\"", 250590)
+
+ #line 291 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 250549), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 250549), false)
+);
+
+WriteLiteral(" width=\"274\"");
+
+WriteLiteral(" height=\"274\"");
+
+WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_Browser
+
+ #line default
+ #line hidden
+, 253697), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 253737), Tuple.Create("\"", 253784)
+
+ #line 294 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 253745), Tuple.Create
(Resources.WelcomePageImageText_Browser
+
+ #line default
+ #line hidden
+, 253745), false)
+);
+
+WriteLiteral(" width=\"384\"");
+
+WriteLiteral(" height=\"305\"");
+
+WriteLiteral(" />:-|
\r\n \r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 260233), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 260275), Tuple.Create("\"", 260324)
+
+ #line 298 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 260283), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 260283), false)
+);
+
+WriteLiteral(" width=\"274\"");
+
+WriteLiteral(" height=\"274\"");
+
+WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 269125), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 269167), Tuple.Create("\"", 269216)
+
+ #line 301 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 269175), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
+
+ #line default
+ #line hidden
+, 269175), false)
+);
+
+WriteLiteral(" width=\"346\"");
+
+WriteLiteral(" height=\"658\"");
+
+WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_Skyline
+
+ #line default
+ #line hidden
+, 284091), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 284131), Tuple.Create("\"", 284178)
+
+ #line 304 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 284139), Tuple.Create
(Resources.WelcomePageImageText_Skyline
+
+ #line default
+ #line hidden
+, 284139), false)
+);
+
+WriteLiteral(" width=\"1212\"");
+
+WriteLiteral(" height=\"202\"");
+
+WriteLiteral(" />\r\n
\r\n
\r\n\r\n \r\n
");
+
+
+ #line 309 "WelcomePage.cshtml"
+ Write(Resources.WelcomeHeader);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
");
+
+
+ #line 310 "WelcomePage.cshtml"
+ Write(Resources.WelcomeStarted);
+
+
+ #line default
+ #line hidden
+WriteLiteral("
\r\n
");
+
+
+ #line 311 "WelcomePage.cshtml"
+ Write(Resources.WelcomeLearnOwin);
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n \r\n

(Resources.WelcomePageImageText_LearnMore
+
+ #line default
+ #line hidden
+, 287037), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 287079), Tuple.Create("\"", 287128)
+
+ #line 314 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 287087), Tuple.Create
(Resources.WelcomePageImageText_LearnMore
+
+ #line default
+ #line hidden
+, 287087), false)
+);
+
+WriteLiteral(" width=\"58\"");
+
+WriteLiteral(" height=\"29\"");
+
+WriteLiteral(" /> \r\n \r\n
");
+
+
+ #line 316 "WelcomePage.cshtml"
+ Write(Resources.WelcomeLearnMicrosoftOwin);
+
+
+ #line default
+ #line hidden
+WriteLiteral("\r\n

(Resources.WelcomePageImageText_LearnMore
+
+ #line default
+ #line hidden
+, 289803), false)
+);
+
+WriteAttribute("title", Tuple.Create(" title=\"", 289845), Tuple.Create("\"", 289894)
+
+ #line 318 "WelcomePage.cshtml"
+, Tuple.Create(Tuple.Create("", 289853), Tuple.Create
(Resources.WelcomePageImageText_LearnMore
+
+ #line default
+ #line hidden
+, 289853), false)
+);
+
+WriteLiteral(" width=\"58\"");
+
+WriteLiteral(" height=\"29\"");
+
+WriteLiteral(" /> \r\n \r\n
\r\n\r\n\r\n\r\n");
+
+ }
+ }
+}
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cshtml b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cshtml
new file mode 100644
index 0000000000..aad90f6533
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cshtml
@@ -0,0 +1,323 @@
+@using System
+@{
+ Response.ContentType = "text/html";
+}
+
+
+
+
+ @Resources.WelcomeTitle
+
+
+
+
+
+
+
+

+
+

:-|
+
+
+

+
+

+
+

+
+
+
+
+
+
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
new file mode 100644
index 0000000000..3808f5d431
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
@@ -0,0 +1,50 @@
+<#@ template debug="false" hostspecific="true" language="C#" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Web.Razor" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.IO" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Web.Razor" #>
+<#@ import namespace="System.Web.Razor.Text" #>
+<#@ output extension=".cs" #>
+<#
+var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
+host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
+var engine = new RazorTemplateEngine(host);
+var path = Host.ResolvePath("WelcomePage.cshtml");
+
+var code = engine.GenerateCode(
+ new System.IO.StreamReader(path),
+ "WelcomePage",
+ "Microsoft.Owin.Diagnostics.Views",
+ "WelcomePage.cshtml");
+
+var provider = new Microsoft.CSharp.CSharpCodeProvider();
+var writer = new System.IO.StringWriter();
+provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
+var source = writer.ToString();
+var startIndex = 0;
+while(startIndex < source.Length)
+{
+ var startMatch = @"Write(@""[[";
+ var startCode = @"WriteLiteral(@""";
+ var endMatch = @"]]"");";
+ var endCode = @""");";
+ startIndex = source.IndexOf(startMatch, startIndex);
+ if (startIndex == -1)
+ {
+ break;
+ }
+ var endIndex = source.IndexOf(endMatch, startIndex);
+ if (endIndex == -1)
+ {
+ break;
+ }
+ var fileName = source.Substring(startIndex + startMatch.Length, endIndex - (startIndex + startMatch.Length));
+ var replacement = File.ReadAllText(Host.ResolvePath(fileName)).Replace("\"", "\"\"");
+ source = source.Substring(0, startIndex) + startCode + replacement + endCode + source.Substring(endIndex + endMatch.Length);
+ startIndex = startIndex + startCode.Length + replacement.Length + endCode.Length;
+ }
+#>
+<#=source#>
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
new file mode 100644
index 0000000000..711bb33b17
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
@@ -0,0 +1,62 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Diagnostics;
+
+namespace Microsoft.AspNet
+{
+ ///
+ /// IBuilder extensions for the WelcomePageMiddleware.
+ ///
+ public static class WelcomePageExtensions
+ {
+ ///
+ /// Adds the WelcomePageMiddleware to the pipeline with the given options.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseWelcomePage(this IBuilder builder, WelcomePageOptions options)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException("builder");
+ }
+
+ return builder.Use(next => new WelcomePageMiddleware(next, options).Invoke);
+ }
+
+ ///
+ /// Adds the WelcomePageMiddleware to the pipeline with the given path.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseWelcomePage(this IBuilder builder, PathString path)
+ {
+ return UseWelcomePage(builder, new WelcomePageOptions { Path = path });
+ }
+
+ ///
+ /// Adds the WelcomePageMiddleware to the pipeline with the given path.
+ ///
+ ///
+ ///
+ ///
+ public static IBuilder UseWelcomePage(this IBuilder builder, string path)
+ {
+ return UseWelcomePage(builder, new WelcomePageOptions { Path = new PathString(path) });
+ }
+
+ ///
+ /// Adds the WelcomePageMiddleware to the pipeline.
+ ///
+ ///
+ ///
+ public static IBuilder UseWelcomePage(this IBuilder builder)
+ {
+ return UseWelcomePage(builder, new WelcomePageOptions());
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
new file mode 100644
index 0000000000..a37b92cd7e
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
@@ -0,0 +1,58 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNet.Diagnostics.Views;
+using Microsoft.AspNet.Abstractions;
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// This middleware provides a default web page for new applications.
+ ///
+ public class WelcomePageMiddleware
+ {
+ private readonly RequestDelegate _next;
+ private readonly WelcomePageOptions _options;
+
+ ///
+ /// Creates a default web page for new applications.
+ ///
+ ///
+ ///
+ public WelcomePageMiddleware(RequestDelegate next, WelcomePageOptions options)
+ {
+ if (next == null)
+ {
+ throw new ArgumentNullException("next");
+ }
+ if (options == null)
+ {
+ throw new ArgumentNullException("options");
+ }
+
+ _next = next;
+ _options = options;
+ }
+
+ ///
+ /// Process an individual request.
+ ///
+ ///
+ ///
+ public Task Invoke(HttpContext context)
+ {
+ HttpRequest request = context.Request;
+ if (!_options.Path.HasValue || _options.Path == request.Path)
+ {
+ // Dynamically generated for LOC.
+ var welcomePage = new WelcomePage();
+ welcomePage.Execute(context);
+ return Task.FromResult(0);
+ }
+
+ return _next(context);
+ }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
new file mode 100644
index 0000000000..1ea64b6b2d
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
@@ -0,0 +1,17 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.Abstractions;
+
+namespace Microsoft.AspNet.Diagnostics
+{
+ ///
+ /// Options for the WelcomePageMiddleware.
+ ///
+ public class WelcomePageOptions
+ {
+ ///
+ /// Specifies which requests paths will be responded to. Exact matches only. Leave null to handle all requests.
+ ///
+ public PathString Path { get; set; }
+ }
+}
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
new file mode 100644
index 0000000000..fd27f24aff
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -0,0 +1,32 @@
+{
+ "version": "0.1-alpha-*",
+ "dependencies": {
+ "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
+ "Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
+ "Microsoft.AspNet.PipelineCore": "0.1-alpha-*",
+ "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.FeatureModel": "0.1-alpha-*"
+ },
+ "configurations": {
+ "net45": {},
+ "k10": {
+ "dependencies": {
+ "System.Collections": "4.0.0.0",
+ "System.ComponentModel": "4.0.0.0",
+ "System.Diagnostics.Debug": "4.0.10.0",
+ "System.Diagnostics.Tools": "4.0.0.0",
+ "System.Globalization": "4.0.10.0",
+ "System.IO": "4.0.0.0",
+ "System.IO.FileSystem": "4.0.0.0",
+ "System.IO.FileSystem.Primitives": "4.0.0.0",
+ "System.Linq": "4.0.0.0",
+ "System.Reflection": "4.0.10.0",
+ "System.Resources.ResourceManager": "4.0.0.0",
+ "System.Runtime": "4.0.20.0",
+ "System.Runtime.Extensions": "4.0.10.0",
+ "System.Threading": "4.0.0.0",
+ "System.Threading.Tasks": "4.0.0.0"
+ }
+ }
+ }
+}
\ No newline at end of file
From 0767bb104ede97d5bfd9854b7c3f536c8d1e0414 Mon Sep 17 00:00:00 2001
From: David Fowler
Date: Thu, 27 Mar 2014 22:33:28 -0700
Subject: [PATCH 002/603] Updated package versions.
---
samples/ErrorPageSample/project.json | 4 ++--
samples/WelcomePageSample/project.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index f38335b51e..1d6422dc08 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -30,8 +30,8 @@
"System.Resources.ResourceManager": "4.0.0.0",
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
- "System.Runtime.InteropServices": "4.0.10.0",
- "System.Text.Encoding": "4.0.10.0",
+ "System.Runtime.InteropServices": "4.0.20.0",
+ "System.Text.Encoding": "4.0.20.0",
"System.Threading.Tasks": "4.0.0.0"
}
}
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index f38335b51e..2e840afdb9 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -31,7 +31,7 @@
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
"System.Runtime.InteropServices": "4.0.10.0",
- "System.Text.Encoding": "4.0.10.0",
+ "System.Text.Encoding": "4.0.20.0",
"System.Threading.Tasks": "4.0.0.0"
}
}
From edb931bb2d7e21db8a5f9b11f71e3eb48bbc60ff Mon Sep 17 00:00:00 2001
From: David Fowler
Date: Thu, 27 Mar 2014 22:45:20 -0700
Subject: [PATCH 003/603] Fixed interop services package version.
---
samples/WelcomePageSample/project.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index 2e840afdb9..1d6422dc08 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -30,7 +30,7 @@
"System.Resources.ResourceManager": "4.0.0.0",
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
- "System.Runtime.InteropServices": "4.0.10.0",
+ "System.Runtime.InteropServices": "4.0.20.0",
"System.Text.Encoding": "4.0.20.0",
"System.Threading.Tasks": "4.0.0.0"
}
From a42fcb72b33e120957a943c2988bc8ad5d729ee1 Mon Sep 17 00:00:00 2001
From: David Fowler
Date: Fri, 28 Mar 2014 00:04:30 -0700
Subject: [PATCH 004/603] Update to new version of Tasks
---
samples/ErrorPageSample/project.json | 2 +-
samples/WelcomePageSample/project.json | 2 +-
src/Microsoft.AspNet.Diagnostics/project.json | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index 1d6422dc08..a10832478b 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -32,7 +32,7 @@
"System.Runtime.Extensions": "4.0.10.0",
"System.Runtime.InteropServices": "4.0.20.0",
"System.Text.Encoding": "4.0.20.0",
- "System.Threading.Tasks": "4.0.0.0"
+ "System.Threading.Tasks": "4.0.10.0"
}
}
}
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index 1d6422dc08..a10832478b 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -32,7 +32,7 @@
"System.Runtime.Extensions": "4.0.10.0",
"System.Runtime.InteropServices": "4.0.20.0",
"System.Text.Encoding": "4.0.20.0",
- "System.Threading.Tasks": "4.0.0.0"
+ "System.Threading.Tasks": "4.0.10.0"
}
}
}
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
index fd27f24aff..bf9fa47b6c 100644
--- a/src/Microsoft.AspNet.Diagnostics/project.json
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -25,7 +25,7 @@
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
"System.Threading": "4.0.0.0",
- "System.Threading.Tasks": "4.0.0.0"
+ "System.Threading.Tasks": "4.0.10.0"
}
}
}
From a18e0375784a2aa3b3cbe5c5505c885119482a04 Mon Sep 17 00:00:00 2001
From: David Fowler
Date: Thu, 27 Mar 2014 22:42:39 -0700
Subject: [PATCH 005/603] Updated samples to use new hosting APIs
---
samples/ErrorPageSample/Program.cs | 28 --------------------------
samples/ErrorPageSample/Startup.cs | 17 ++++------------
samples/ErrorPageSample/project.json | 15 +++++---------
samples/WelcomePageSample/Program.cs | 28 --------------------------
samples/WelcomePageSample/Startup.cs | 15 +++-----------
samples/WelcomePageSample/project.json | 15 +++++---------
6 files changed, 17 insertions(+), 101 deletions(-)
delete mode 100644 samples/ErrorPageSample/Program.cs
delete mode 100644 samples/WelcomePageSample/Program.cs
diff --git a/samples/ErrorPageSample/Program.cs b/samples/ErrorPageSample/Program.cs
deleted file mode 100644
index a4c76acea0..0000000000
--- a/samples/ErrorPageSample/Program.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-#if NET45
-using System.Diagnostics;
-using Microsoft.Owin.Hosting;
-#endif
-
-namespace ErrorPageSample
-{
- public class Program
- {
- const string baseUrl = "http://localhost:9001/";
-
- public static void Main()
- {
-#if NET45
- using (WebApp.Start(new StartOptions(baseUrl)))
- {
- Console.WriteLine("Listening at {0}", baseUrl);
- Process.Start(baseUrl);
- Console.WriteLine("Press any key to exit");
- Console.ReadKey();
- }
-#else
- Console.WriteLine("Hello World");
-#endif
- }
- }
-}
\ No newline at end of file
diff --git a/samples/ErrorPageSample/Startup.cs b/samples/ErrorPageSample/Startup.cs
index d39eb7874c..bed1d3cc07 100644
--- a/samples/ErrorPageSample/Startup.cs
+++ b/samples/ErrorPageSample/Startup.cs
@@ -1,27 +1,18 @@
-#if NET45
-using System;
+using System;
using Microsoft.AspNet;
using Microsoft.AspNet.Abstractions;
-using Owin;
namespace ErrorPageSample
{
public class Startup
{
- public void Configuration(IAppBuilder app)
+ public void Configuration(IBuilder app)
{
- // Temporary bridge from katana to Owin
- app.UseBuilder(ConfigurePK);
- }
-
- private void ConfigurePK(IBuilder builder)
- {
- builder.UseErrorPage();
- builder.Run(context =>
+ app.UseErrorPage();
+ app.Run(context =>
{
throw new Exception("Demonstration exception");
});
}
}
}
-#endif
\ No newline at end of file
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index a10832478b..77f0f437b8 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -3,18 +3,13 @@
"dependencies": {
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
- "Microsoft.AspNet.Abstractions": "0.1-alpha-*"
+ "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.Server.WebListener": "0.1-alpha-*",
+ "Microsoft.AspNet.Hosting": "0.1-alpha-*"
},
+ "commands": { "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" },
"configurations": {
- "net45": {
- "dependencies": {
- "Owin": "1.0",
- "Microsoft.Owin": "2.1.0",
- "Microsoft.Owin.Hosting": "2.1.0",
- "Microsoft.Owin.Host.HttpListener": "2.1.0",
- "Microsoft.AspNet.AppBuilderSupport": "0.1-alpha-*"
- }
- },
+ "net45": {},
"k10": {
"dependencies": {
"System.Console": "4.0.0.0",
diff --git a/samples/WelcomePageSample/Program.cs b/samples/WelcomePageSample/Program.cs
deleted file mode 100644
index 0360e87f60..0000000000
--- a/samples/WelcomePageSample/Program.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-#if NET45
-using System.Diagnostics;
-using Microsoft.Owin.Hosting;
-#endif
-
-namespace WelcomePageSample
-{
- public class Program
- {
- const string baseUrl = "http://localhost:9001/";
-
- public static void Main()
- {
-#if NET45
- using (WebApp.Start(new StartOptions(baseUrl)))
- {
- Console.WriteLine("Listening at {0}", baseUrl);
- Process.Start(baseUrl);
- Console.WriteLine("Press any key to exit");
- Console.ReadKey();
- }
-#else
- Console.WriteLine("Hello World");
-#endif
- }
- }
-}
\ No newline at end of file
diff --git a/samples/WelcomePageSample/Startup.cs b/samples/WelcomePageSample/Startup.cs
index 0b08dfb71b..ca9ccc7148 100644
--- a/samples/WelcomePageSample/Startup.cs
+++ b/samples/WelcomePageSample/Startup.cs
@@ -1,22 +1,13 @@
-#if NET45
-using Microsoft.AspNet;
+using Microsoft.AspNet;
using Microsoft.AspNet.Abstractions;
-using Owin;
namespace WelcomePageSample
{
public class Startup
{
- public void Configuration(IAppBuilder app)
+ public void Configuration(IBuilder app)
{
- // Temporary bridge from katana to Owin
- app.UseBuilder(ConfigurePK);
- }
-
- private void ConfigurePK(IBuilder builder)
- {
- builder.UseWelcomePage();
+ app.UseWelcomePage();
}
}
}
-#endif
\ No newline at end of file
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index a10832478b..c9932d4a4f 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -3,18 +3,13 @@
"dependencies": {
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
- "Microsoft.AspNet.Abstractions": "0.1-alpha-*"
+ "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.Server.WebListener": "0.1-alpha-*",
+ "Microsoft.AspNet.Hosting": "0.1-alpha-*"
},
+ "commands": { "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" },
"configurations": {
- "net45": {
- "dependencies": {
- "Owin": "1.0",
- "Microsoft.Owin": "2.1.0",
- "Microsoft.Owin.Hosting": "2.1.0",
- "Microsoft.Owin.Host.HttpListener": "2.1.0",
- "Microsoft.AspNet.AppBuilderSupport": "0.1-alpha-*"
- }
- },
+ "net45": { },
"k10": {
"dependencies": {
"System.Console": "4.0.0.0",
From f5f225e6eadc8ffb299988070926a933d89f239a Mon Sep 17 00:00:00 2001
From: David Fowler
Date: Tue, 8 Apr 2014 02:11:05 -0700
Subject: [PATCH 006/603] Updated to use new tooling
---
DiagnosticsPages.sln | 79 +++++++++----------
samples/ErrorPageSample/ErrorPageSample.kproj | 29 +++++++
samples/ErrorPageSample/project.json | 4 +-
.../WelcomePageSample/WelcomePageSample.kproj | 29 +++++++
samples/WelcomePageSample/project.json | 4 +-
.../Microsoft.AspNet.Diagnostics.kproj | 52 ++++++++++++
6 files changed, 155 insertions(+), 42 deletions(-)
create mode 100644 samples/ErrorPageSample/ErrorPageSample.kproj
create mode 100644 samples/WelcomePageSample/WelcomePageSample.kproj
create mode 100644 src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
diff --git a/DiagnosticsPages.sln b/DiagnosticsPages.sln
index 2865030cad..3bb0a67b81 100644
--- a/DiagnosticsPages.sln
+++ b/DiagnosticsPages.sln
@@ -1,64 +1,63 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
-VisualStudioVersion = 12.0.30203.2
+VisualStudioVersion = 12.0.30327.0
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Diagnostics.net45", "src\Microsoft.AspNet.Diagnostics\Microsoft.AspNet.Diagnostics.net45.csproj", "{092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Diagnostics.k10", "src\Microsoft.AspNet.Diagnostics\Microsoft.AspNet.Diagnostics.k10.csproj", "{CBE6B125-407F-403E-9E95-4D0836DEE706}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{509A6F36-AD80-4A18-B5B1-717D38DFF29D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{ACAA0157-A8C4-4152-93DE-90CCDF304087}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelcomePageSample.net45", "samples\WelcomePageSample\WelcomePageSample.net45.csproj", "{7385EBB2-36DD-4EF7-AF9E-3C4348991C64}"
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WelcomePageSample", "samples\WelcomePageSample\WelcomePageSample.kproj", "{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelcomePageSample.k10", "samples\WelcomePageSample\WelcomePageSample.k10.csproj", "{E2B98257-E434-439E-B61F-A3576F18FD34}"
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Diagnostics", "src\Microsoft.AspNet.Diagnostics\Microsoft.AspNet.Diagnostics.kproj", "{68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ErrorPageSample.k10", "samples\ErrorPageSample\ErrorPageSample.k10.csproj", "{FA5E49FF-4715-4241-9829-6E720AE5AA1D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ErrorPageSample.net45", "samples\ErrorPageSample\ErrorPageSample.net45.csproj", "{1E44DE4A-BAB3-4383-B63F-63D8416AAC60}"
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ErrorPageSample", "samples\ErrorPageSample\ErrorPageSample.kproj", "{589AC17F-9455-4764-8F82-FCD2AE58DA14}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A}.Release|Any CPU.Build.0 = Release|Any CPU
- {CBE6B125-407F-403E-9E95-4D0836DEE706}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CBE6B125-407F-403E-9E95-4D0836DEE706}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CBE6B125-407F-403E-9E95-4D0836DEE706}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CBE6B125-407F-403E-9E95-4D0836DEE706}.Release|Any CPU.Build.0 = Release|Any CPU
- {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7385EBB2-36DD-4EF7-AF9E-3C4348991C64}.Release|Any CPU.Build.0 = Release|Any CPU
- {E2B98257-E434-439E-B61F-A3576F18FD34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E2B98257-E434-439E-B61F-A3576F18FD34}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E2B98257-E434-439E-B61F-A3576F18FD34}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E2B98257-E434-439E-B61F-A3576F18FD34}.Release|Any CPU.Build.0 = Release|Any CPU
- {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FA5E49FF-4715-4241-9829-6E720AE5AA1D}.Release|Any CPU.Build.0 = Release|Any CPU
- {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1E44DE4A-BAB3-4383-B63F-63D8416AAC60}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.ActiveCfg = Debug|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.Build.0 = Debug|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Any CPU.ActiveCfg = Release|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.Build.0 = Release|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|x86.ActiveCfg = Release|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|x86.Build.0 = Release|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|x86.ActiveCfg = Debug|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|x86.Build.0 = Debug|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Any CPU.ActiveCfg = Release|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.Build.0 = Release|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.ActiveCfg = Release|x86
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.Build.0 = Release|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.ActiveCfg = Debug|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.Build.0 = Debug|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Any CPU.ActiveCfg = Release|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.Build.0 = Release|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.ActiveCfg = Release|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {092C4ACA-9F4C-4EDB-8B92-8E9FDF49E74A} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
- {CBE6B125-407F-403E-9E95-4D0836DEE706} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
- {7385EBB2-36DD-4EF7-AF9E-3C4348991C64} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
- {E2B98257-E434-439E-B61F-A3576F18FD34} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
- {FA5E49FF-4715-4241-9829-6E720AE5AA1D} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
- {1E44DE4A-BAB3-4383-B63F-63D8416AAC60} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
EndGlobalSection
EndGlobal
diff --git a/samples/ErrorPageSample/ErrorPageSample.kproj b/samples/ErrorPageSample/ErrorPageSample.kproj
new file mode 100644
index 0000000000..7f2abad633
--- /dev/null
+++ b/samples/ErrorPageSample/ErrorPageSample.kproj
@@ -0,0 +1,29 @@
+
+
+
+ 12.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ 589ac17f-9455-4764-8f82-fcd2ae58da14
+ Web
+
+
+
+
+
+
+ 2.0
+
+
+ 47205
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index 77f0f437b8..26a23b8136 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -1,6 +1,7 @@
{
"version": "0.1-alpha-*",
"dependencies": {
+ "Helios" : "0.1-alpha-*",
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
@@ -27,7 +28,8 @@
"System.Runtime.Extensions": "4.0.10.0",
"System.Runtime.InteropServices": "4.0.20.0",
"System.Text.Encoding": "4.0.20.0",
- "System.Threading.Tasks": "4.0.10.0"
+ "System.Threading.Tasks": "4.0.10.0",
+ "System.Security.Claims": "0.1-alpha-*"
}
}
}
diff --git a/samples/WelcomePageSample/WelcomePageSample.kproj b/samples/WelcomePageSample/WelcomePageSample.kproj
new file mode 100644
index 0000000000..e22fa41e21
--- /dev/null
+++ b/samples/WelcomePageSample/WelcomePageSample.kproj
@@ -0,0 +1,29 @@
+
+
+
+ 12.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ c5f59cba-df2d-4983-8cbb-11b6af21b416
+ Web
+
+
+
+
+
+
+ 2.0
+
+
+ 47126
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index c9932d4a4f..90691ce5ab 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -1,6 +1,7 @@
{
"version": "0.1-alpha-*",
"dependencies": {
+ "Helios" : "0.1-alpha-*",
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
@@ -27,7 +28,8 @@
"System.Runtime.Extensions": "4.0.10.0",
"System.Runtime.InteropServices": "4.0.20.0",
"System.Text.Encoding": "4.0.20.0",
- "System.Threading.Tasks": "4.0.10.0"
+ "System.Threading.Tasks": "4.0.10.0",
+ "System.Security.Claims": "0.1-alpha-*"
}
}
}
diff --git a/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
new file mode 100644
index 0000000000..896a7111a0
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
@@ -0,0 +1,52 @@
+
+
+
+ 12.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ 68a1f0e1-ecce-46d1-b20f-c43ee5b097de
+ Library
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From a78d5ac0194f46648c5678189ece3bb86131574c Mon Sep 17 00:00:00 2001
From: Chris Ross
Date: Thu, 1 May 2014 12:31:44 -0700
Subject: [PATCH 007/603] Remove unused FileSystem dependencies.
---
src/Microsoft.AspNet.Diagnostics/project.json | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
index bf9fa47b6c..532c4c66cb 100644
--- a/src/Microsoft.AspNet.Diagnostics/project.json
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -17,8 +17,6 @@
"System.Diagnostics.Tools": "4.0.0.0",
"System.Globalization": "4.0.10.0",
"System.IO": "4.0.0.0",
- "System.IO.FileSystem": "4.0.0.0",
- "System.IO.FileSystem.Primitives": "4.0.0.0",
"System.Linq": "4.0.0.0",
"System.Reflection": "4.0.10.0",
"System.Resources.ResourceManager": "4.0.0.0",
From b4de33eeea4c809e52bf00e8ea9a83466ad3695a Mon Sep 17 00:00:00 2001
From: DamianEdwards
Date: Thu, 1 May 2014 15:45:27 -0700
Subject: [PATCH 008/603] Added a console app to generate the Razor pages -
Replaces the TT files previously being used (in Katana) - Modified the
include file logic to work better with the new generated Razor output as the
old syntax/logic didn't work well with the additional line pragmas, etc.
being emitted - Updated the middleware to work with new generated output
(ExecuteAsync instead of Execute, etc.) - Fixed a scoping issue in
Error.cshtml - gitignore sln.ide cache directory - #3
---
.gitignore | 3 +-
DiagnosticsPages.sln | 16 +-
.../ErrorPageMiddleware.cs | 6 +-
.../Microsoft.AspNet.Diagnostics.kproj | 3 -
.../Views/BaseView.cs | 7 +-
.../Views/DiagnosticsPage.cs | 182 +-
.../Views/DiagnosticsPage.tt | 26 -
.../Views/ErrorPage.cs | 1999 ++---
.../Views/ErrorPage.cshtml | 17 +-
.../Views/ErrorPage.js | 5 +-
.../Views/ErrorPage.tt | 51 -
.../Views/WelcomePage.cs | 7741 ++++++++---------
.../Views/WelcomePage.tt | 50 -
.../WelcomePageMiddleware.cs | 3 +-
src/PageGenerator/PageGenerator.kproj | 26 +
src/PageGenerator/Program.cs | 115 +
src/PageGenerator/Project.json | 20 +
17 files changed, 4756 insertions(+), 5514 deletions(-)
delete mode 100644 src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
delete mode 100644 src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
delete mode 100644 src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
create mode 100644 src/PageGenerator/PageGenerator.kproj
create mode 100644 src/PageGenerator/Program.cs
create mode 100644 src/PageGenerator/Project.json
diff --git a/.gitignore b/.gitignore
index 8bc217058d..52351df12f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,5 @@ nuget.exe
*DS_Store
*.ncrunchsolution
*.*sdf
-*.ipch
\ No newline at end of file
+*.ipch
+*.sln.ide
\ No newline at end of file
diff --git a/DiagnosticsPages.sln b/DiagnosticsPages.sln
index 3bb0a67b81..87fd04d83a 100644
--- a/DiagnosticsPages.sln
+++ b/DiagnosticsPages.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30327.0
+# Visual Studio 14
+VisualStudioVersion = 14.0.21628.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{509A6F36-AD80-4A18-B5B1-717D38DFF29D}"
EndProject
@@ -13,6 +13,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Diagnostic
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ErrorPageSample", "samples\ErrorPageSample\ErrorPageSample.kproj", "{589AC17F-9455-4764-8F82-FCD2AE58DA14}"
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "PageGenerator", "src\PageGenerator\PageGenerator.kproj", "{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -51,6 +53,15 @@ Global
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.Build.0 = Release|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.ActiveCfg = Release|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.Build.0 = Release|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.ActiveCfg = Debug|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.Build.0 = Debug|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Any CPU.ActiveCfg = Release|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.Build.0 = Release|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|x86.ActiveCfg = Release|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -59,5 +70,6 @@ Global
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
{68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
{589AC17F-9455-4764-8F82-FCD2AE58DA14} = {ACAA0157-A8C4-4152-93DE-90CCDF304087}
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74} = {509A6F36-AD80-4A18-B5B1-717D38DFF29D}
EndGlobalSection
EndGlobal
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
index 10f9fdecac..774b9d8bdf 100644
--- a/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
@@ -60,7 +60,7 @@ namespace Microsoft.AspNet.Diagnostics
{
try
{
- DisplayException(context, ex);
+ await DisplayException(context, ex);
return;
}
catch (Exception)
@@ -72,7 +72,7 @@ namespace Microsoft.AspNet.Diagnostics
}
// Assumes the response headers have not been sent. If they have, still attempt to write to the body.
- private void DisplayException(HttpContext context, Exception ex)
+ private async Task DisplayException(HttpContext context, Exception ex)
{
var request = context.Request;
@@ -103,7 +103,7 @@ namespace Microsoft.AspNet.Diagnostics
}*/
var errorPage = new ErrorPage() { Model = model };
- errorPage.Execute(context);
+ await errorPage.ExecuteAsync(context);
}
private IEnumerable GetErrorDetails(Exception ex, bool showSource)
diff --git a/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
index 896a7111a0..6749d006c1 100644
--- a/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
+++ b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
@@ -20,13 +20,10 @@
-
-
-
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
index bfcd2c93ee..934bf7096b 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
@@ -5,6 +5,7 @@ using System;
using System.Globalization;
using System.IO;
using System.Net;
+using System.Threading.Tasks;
namespace Microsoft.AspNet.Diagnostics.Views
{
@@ -37,20 +38,20 @@ namespace Microsoft.AspNet.Diagnostics.Views
/// Execute an individual request
///
///
- public void Execute(HttpContext context)
+ public async Task ExecuteAsync(HttpContext context)
{
Context = context;
Request = Context.Request;
Response = Context.Response;
Output = new StreamWriter(Response.Body);
- Execute();
+ await ExecuteAsync();
Output.Dispose();
}
///
/// Execute an individual request
///
- public abstract void Execute();
+ public abstract Task ExecuteAsync();
///
/// Write the given value directly to the output
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
index cd293e7b86..86971816a6 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.cs
@@ -1,38 +1,29 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18213
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+#line 1 "DiagnosticsPage.cshtml"
+using System
-namespace Microsoft.AspNet.Diagnostics.Views {
-
- #line 1 "DiagnosticsPage.cshtml"
- using System;
-
- #line default
- #line hidden
-
- #line 2 "DiagnosticsPage.cshtml"
- using System.Globalization;
-
- #line default
- #line hidden
-
-
- public class DiagnosticsPage : Microsoft.AspNet.Diagnostics.Views.BaseView {
-
+#line default
#line hidden
-
- public DiagnosticsPage() {
+ ;
+#line 2 "DiagnosticsPage.cshtml"
+using System.Globalization
+
+#line default
+#line hidden
+ ;
+ using System.Threading.Tasks;
+
+ public class DiagnosticsPage : Microsoft.AspNet.Diagnostics.Views.BaseView
+ {
+ #line hidden
+ public DiagnosticsPage()
+ {
}
-
- public override void Execute() {
-
- #line 3 "DiagnosticsPage.cshtml"
+
+ public override async Task ExecuteAsync()
+ {
+#line 3 "DiagnosticsPage.cshtml"
Response.ContentType = "text/html";
string error = Request.Query.Get("error");
@@ -41,93 +32,70 @@ namespace Microsoft.AspNet.Diagnostics.Views {
throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "User requested error '{0}'", error));
}
-
- #line default
- #line hidden
-WriteLiteral("\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n ");
+ Write(
+#line 16 "DiagnosticsPage.cshtml"
+ Resources.DiagnosticsPageHtml_Title
-WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+#line default
+#line hidden
+ );
-WriteLiteral(">\r\n\r\n \r\n\r\n\r\n \r\n
");
+ Write(
+#line 20 "DiagnosticsPage.cshtml"
+ Resources.DiagnosticsPageHtml_Title
-WriteLiteral(" charset=\"utf-8\"");
+#line default
+#line hidden
+ );
-WriteLiteral(" />\r\n ");
+ WriteLiteral("
\r\n
");
+ Write(
+#line 21 "DiagnosticsPage.cshtml"
+ Resources.DiagnosticsPageHtml_Information
-
- #line 16 "DiagnosticsPage.cshtml"
- Write(Resources.DiagnosticsPageHtml_Title);
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral("\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
");
-
-
- #line 24 "DiagnosticsPage.cshtml"
- Write(Resources.DiagnosticsPageHtml_TestErrorSection);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n
(Request.PathBase
-
- #line default
- #line hidden
-, 774), false)
-
- #line 25 "DiagnosticsPage.cshtml"
-, Tuple.Create(Tuple.Create("", 791), Tuple.Create(Request.Path
-
- #line default
- #line hidden
-, 791), false)
-, Tuple.Create(Tuple.Create("", 804), Tuple.Create("?error=", 804), true)
-
- #line 25 "DiagnosticsPage.cshtml"
-, Tuple.Create(Tuple.Create("", 811), Tuple.Create(Resources.DiagnosticsPageHtml_TestErrorMessage
-
- #line default
- #line hidden
-, 811), false)
-);
-
-WriteLiteral(">throw InvalidOperationException
\r\n
\r\n\r\n\r\n");
+#line default
+#line hidden
+ , 791), false), Tuple.Create(Tuple.Create("", 804), Tuple.Create("?error=", 804), true),
+ Tuple.Create(Tuple.Create("", 811), Tuple.Create
(
+#line 25 "DiagnosticsPage.cshtml"
+ Resources.DiagnosticsPageHtml_TestErrorMessage
+#line default
+#line hidden
+ , 811), false));
+ WriteLiteral(">throw InvalidOperationException\r\n \r\n\r\n\r\n");
}
}
}
-
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt b/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
deleted file mode 100644
index 643ca3bb50..0000000000
--- a/src/Microsoft.AspNet.Diagnostics/Views/DiagnosticsPage.tt
+++ /dev/null
@@ -1,26 +0,0 @@
-<#@ template debug="false" hostspecific="true" language="C#" #>
-<#@ assembly name="System.Core" #>
-<#@ assembly name="System.Web.Razor" #>
-<#@ import namespace="System.Linq" #>
-<#@ import namespace="System.Text" #>
-<#@ import namespace="System.Collections.Generic" #>
-<#@ import namespace="System.Web.Razor" #>
-<#@ import namespace="System.Web.Razor.Text" #>
-<#@ output extension=".cs" #>
-<#
-var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
-host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
-var engine = new RazorTemplateEngine(host);
-var path = Host.ResolvePath("DiagnosticsPage.cshtml");
-
-var code = engine.GenerateCode(
- new System.IO.StreamReader(path),
- "DiagnosticsPage",
- "Microsoft.Owin.Diagnostics.Views",
- @"DiagnosticsPage.cshtml");
-
-var provider = new Microsoft.CSharp.CSharpCodeProvider();
-var writer = new System.IO.StringWriter();
-provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
-#>
-<#=writer.ToString()#>
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
index ed73f65b6c..022dcc616b 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
@@ -1,1649 +1,1026 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.33440
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+#line 1 "ErrorPage.cshtml"
+using System
-namespace Microsoft.AspNet.Diagnostics.Views {
-
- #line 1 "ErrorPage.cshtml"
- using System;
-
- #line default
- #line hidden
-
- #line 2 "ErrorPage.cshtml"
- using System.Globalization;
-
- #line default
- #line hidden
-
- #line 3 "ErrorPage.cshtml"
- using System.Linq;
-
- #line default
- #line hidden
-
- #line 4 "ErrorPage.cshtml"
- using Views;
-
- #line default
- #line hidden
-
-
- public class ErrorPage : Microsoft.AspNet.Diagnostics.Views.BaseView {
-
+#line default
#line hidden
-
- #line 6 "ErrorPage.cshtml"
-
+ ;
+#line 2 "ErrorPage.cshtml"
+using System.Globalization
+
+#line default
+#line hidden
+ ;
+#line 3 "ErrorPage.cshtml"
+using System.Linq
+
+#line default
+#line hidden
+ ;
+#line 4 "ErrorPage.cshtml"
+using Views
+
+#line default
+#line hidden
+ ;
+ using System.Threading.Tasks;
+
+ public class ErrorPage : Microsoft.AspNet.Diagnostics.Views.BaseView
+ {
+#line 6 "ErrorPage.cshtml"
+
///
///
///
- public Views.ErrorPageModel Model { get; set; }
+ public ErrorPageModel Model { get; set; }
- #line default
+#line default
+#line hidden
#line hidden
-
-
- public ErrorPage() {
+ public ErrorPage()
+ {
}
-
- public override void Execute() {
-
- #line 12 "ErrorPage.cshtml"
+
+ public override async Task ExecuteAsync()
+ {
+#line 12 "ErrorPage.cshtml"
Response.StatusCode = 500;
- // Response.ReasonPhrase = "Internal Server Error";
+ // TODO: Response.ReasonPhrase = "Internal Server Error";
Response.ContentType = "text/html";
Response.ContentLength = null; // Clear any prior Content-Length
string location = string.Empty;
-
- #line default
- #line hidden
-WriteLiteral("\r\n\r\n(System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
-
- #line default
- #line hidden
-, 468), false)
-);
+ WriteLiteral("\r\n\r\n(
+#line 20 "ErrorPage.cshtml"
+ CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
-WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+#line default
+#line hidden
+ , 471), false));
+ WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n \r\n \r\n ");
+ Write(
+#line 23 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_Title
-WriteLiteral(">\r\n \r\n \r\n \r\n \r\n \r\n ");
-
-
- #line 29 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_UnhandledException);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 30 "ErrorPage.cshtml"
+ WriteLiteral("\r\n");
+#line 31 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 30 "ErrorPage.cshtml"
+
+#line default
+#line hidden
+
+#line 31 "ErrorPage.cshtml"
if (Model.Options.ShowExceptionDetails)
{
foreach (var errorDetail in Model.ErrorDetails)
{
-
- #line default
- #line hidden
-WriteLiteral(" ");
+ Write(
+#line 35 "ErrorPage.cshtml"
+ errorDetail.Error.GetType().Name
-WriteLiteral(">");
+#line default
+#line hidden
+ );
-
- #line 34 "ErrorPage.cshtml"
- Write(errorDetail.Error.GetType().Name);
+ WriteLiteral(": ");
+ Write(
+#line 35 "ErrorPage.cshtml"
+ errorDetail.Error.Message
-
- #line default
- #line hidden
-WriteLiteral(": ");
+#line default
+#line hidden
+ );
-
- #line 34 "ErrorPage.cshtml"
- Write(errorDetail.Error.Message);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 35 "ErrorPage.cshtml"
+ WriteLiteral("\r\n");
+#line 36 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 35 "ErrorPage.cshtml"
+
+#line default
+#line hidden
+
+#line 36 "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 47 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 46 "ErrorPage.cshtml"
-
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
{
-
- #line default
- #line hidden
-WriteLiteral(" ");
+ Write(
+#line 50 "ErrorPage.cshtml"
+ location
-WriteLiteral(">");
+#line default
+#line hidden
+ );
-
- #line 49 "ErrorPage.cshtml"
- Write(location);
+ WriteLiteral(" in (
+#line 50 "ErrorPage.cshtml"
+ firstFrame.File
-
- #line default
- #line hidden
-WriteLiteral(" in ");
+ Write(
+#line 50 "ErrorPage.cshtml"
+ System.IO.Path.GetFileName(firstFrame.File)
-WriteAttribute("title", Tuple.Create(" title=\"", 1899), Tuple.Create("\"", 1923)
-
- #line 49 "ErrorPage.cshtml"
-, Tuple.Create(Tuple.Create("", 1907), Tuple.Create(firstFrame.File
-
- #line default
- #line hidden
-, 1907), false)
-);
+#line default
+#line hidden
+ );
-WriteLiteral(">");
+ WriteLiteral(", line ");
+ Write(
+#line 50 "ErrorPage.cshtml"
+ firstFrame.Line
-
- #line 49 "ErrorPage.cshtml"
- Write(System.IO.Path.GetFileName(firstFrame.File));
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral(", line ");
-
-
- #line 49 "ErrorPage.cshtml"
- Write(firstFrame.Line);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 50 "ErrorPage.cshtml"
+ WriteLiteral("
\r\n");
+#line 51 "ErrorPage.cshtml"
}
else if (!string.IsNullOrEmpty(location))
{
-
- #line default
- #line hidden
-WriteLiteral(" ");
+ Write(
+#line 54 "ErrorPage.cshtml"
+ location
-WriteLiteral(">");
+#line default
+#line hidden
+ );
-
- #line 53 "ErrorPage.cshtml"
- Write(location);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 54 "ErrorPage.cshtml"
+ WriteLiteral("\r\n");
+#line 55 "ErrorPage.cshtml"
}
else
{
-
- #line default
- #line hidden
-WriteLiteral(" ");
+ Write(
+#line 58 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_UnknownLocation
-WriteLiteral(">");
+#line default
+#line hidden
+ );
-
- #line 57 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_UnknownLocation);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 58 "ErrorPage.cshtml"
+ WriteLiteral("\r\n");
+#line 59 "ErrorPage.cshtml"
}
}
}
else
{
-
- #line default
- #line hidden
-WriteLiteral(" ");
+#line default
+#line hidden
-
- #line 63 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_EnableShowExceptions);
+ WriteLiteral(" ");
+ Write(
+#line 64 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_EnableShowExceptions
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
+#line default
+#line hidden
+ );
-
- #line 64 "ErrorPage.cshtml"
+ WriteLiteral("
\r\n");
+#line 65 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral(" \r\n");
+#line default
+#line hidden
-
- #line 97 "ErrorPage.cshtml"
+ WriteLiteral(" \r\n");
+#line 98 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 97 "ErrorPage.cshtml"
+
+#line default
+#line hidden
+
+#line 98 "ErrorPage.cshtml"
if (Model.Options.ShowExceptionDetails)
{
-
- #line default
- #line hidden
-WriteLiteral(" \r\n");
+#line 155 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral(" ");
+#line default
+#line hidden
-
- #line 155 "ErrorPage.cshtml"
+ WriteLiteral(" ");
+#line 156 "ErrorPage.cshtml"
if (Model.Options.ShowQuery)
{
-
- #line default
- #line hidden
-WriteLiteral(" \r\n");
-
-
- #line 158 "ErrorPage.cshtml"
+ WriteLiteral("
\r\n");
+#line 159 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 158 "ErrorPage.cshtml"
+
+#line default
+#line hidden
+
+#line 159 "ErrorPage.cshtml"
if (Model.Query.Any())
{
-
- #line default
- #line hidden
-WriteLiteral("
\r\n \r\n " +
+#line default
+#line hidden
+
+ WriteLiteral(" \r\n \r\n " +
" \r\n | ");
+ Write(
+#line 164 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_VariableColumn
-
- #line 163 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_VariableColumn);
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
+ WriteLiteral(" | \r\n ");
+ Write(
+#line 165 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_ValueColumn
-
- #line 164 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_ValueColumn);
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n \r\n " +
+ WriteLiteral("\r\n \r\n \r\n " +
" \r\n");
-
-
- #line 168 "ErrorPage.cshtml"
+#line 169 "ErrorPage.cshtml"
-
- #line default
- #line hidden
-
- #line 168 "ErrorPage.cshtml"
+
+#line default
+#line hidden
+
+#line 169 "ErrorPage.cshtml"
foreach (var kv in Model.Query.OrderBy(kv => kv.Key))
{
foreach (var v in kv.Value)
{
-
- #line default
- #line hidden
-WriteLiteral(" \r\n " +
+#line default
+#line hidden
+
+ WriteLiteral("
\r\n " +
" | ");
+ Write(
+#line 174 "ErrorPage.cshtml"
+ kv.Key
-
- #line 173 "ErrorPage.cshtml"
- Write(kv.Key);
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
+ WriteLiteral(" | \r\n ");
+ Write(
+#line 175 "ErrorPage.cshtml"
+ v
-
- #line 174 "ErrorPage.cshtml"
- Write(v);
+#line default
+#line hidden
+ );
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n");
-
-
- #line 176 "ErrorPage.cshtml"
+ WriteLiteral("\r\n \r\n");
+#line 177 "ErrorPage.cshtml"
}
}
-
- #line default
- #line hidden
-WriteLiteral(" \r\n
\r\n");
+#line default
+#line hidden
-
- #line 180 "ErrorPage.cshtml"
+ WriteLiteral(" \r\n
\r\n");
+#line 181 "ErrorPage.cshtml"
}
else
{
-
- #line default
- #line hidden
-WriteLiteral("
");
+#line default
+#line hidden
-
- #line 183 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_NoQueryStringData);
+ WriteLiteral("
");
+ Write(
+#line 184 "ErrorPage.cshtml"
+ Resources.ErrorPageHtml_NoQueryStringData
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
+#line default
+#line hidden
+ );
-
- #line 184 "ErrorPage.cshtml"
+ WriteLiteral("\r\n");
+#line 185 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
+#line default
+#line hidden
-
- #line 186 "ErrorPage.cshtml"
+ WriteLiteral("
\r\n");
+#line 187 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral(" ");
+#line default
+#line hidden
-
- #line 187 "ErrorPage.cshtml"
+ WriteLiteral(" ");
+#line 188 "ErrorPage.cshtml"
if (Model.Options.ShowCookies)
{
- /*
-
- #line default
- #line hidden
-WriteLiteral(" \r\n");
-
-
- #line 190 "ErrorPage.cshtml"
-
-
- #line default
- #line hidden
-
- #line 190 "ErrorPage.cshtml"
- if (Model.Cookies.Any())
+ /* TODO:
+
+ @if (Model.Cookies.Any())
{
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n \r\n " +
-" \r\n | ");
-
-
- #line 195 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_VariableColumn);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
-
-
- #line 196 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_ValueColumn);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n \r\n " +
-" \r\n");
-
-
- #line 200 "ErrorPage.cshtml"
-
-
- #line default
- #line hidden
-
- #line 200 "ErrorPage.cshtml"
- foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
+
+
+
+ | @Resources.ErrorPageHtml_VariableColumn |
+ @Resources.ErrorPageHtml_ValueColumn |
+
+
+
+ @foreach (var kv in Model.Cookies.OrderBy(kv => kv.Key))
{
-
-
- #line default
- #line hidden
-WriteLiteral(" \r\n | ");
-
-
- #line 203 "ErrorPage.cshtml"
- Write(kv.Key);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
-
-
- #line 204 "ErrorPage.cshtml"
- Write(kv.Value);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n");
-
-
- #line 206 "ErrorPage.cshtml"
+
+ | @kv.Key |
+ @kv.Value |
+
}
-
-
- #line default
- #line hidden
-WriteLiteral(" \r\n
\r\n");
-
-
- #line 209 "ErrorPage.cshtml"
+
+
}
else
{
-
-
- #line default
- #line hidden
-WriteLiteral("
");
-
-
- #line 212 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_NoCookieData);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
-
-
- #line 213 "ErrorPage.cshtml"
+
@Resources.ErrorPageHtml_NoCookieData
}
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n");
+
*/
-
- #line 215 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral(" ");
+#line default
+#line hidden
-
- #line 216 "ErrorPage.cshtml"
+ WriteLiteral(" ");
+#line 219 "ErrorPage.cshtml"
if (Model.Options.ShowHeaders)
{
-
- #line default
- #line hidden
-WriteLiteral(" \r\n");
+#line 250 "ErrorPage.cshtml"
}
-
- #line default
- #line hidden
-WriteLiteral(" ");
+#line default
+#line hidden
-
- #line 248 "ErrorPage.cshtml"
+ WriteLiteral(" ");
+#line 251 "ErrorPage.cshtml"
if (Model.Options.ShowEnvironment)
{
- /*
-
- #line default
- #line hidden
-WriteLiteral(" \r\n
\r\n \r\n " +
-"\r\n | ");
-
-
- #line 254 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_VariableColumn);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
-
-
- #line 255 "ErrorPage.cshtml"
- Write(Resources.ErrorPageHtml_ValueColumn);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n \r\n " +
-" \r\n");
-
-
- #line 259 "ErrorPage.cshtml"
-
-
- #line default
- #line hidden
-
- #line 259 "ErrorPage.cshtml"
- foreach (var kv in Model.Environment.OrderBy(kv => kv.Key))
+ /* TODO:
+
+
+
+
+ | @Resources.ErrorPageHtml_VariableColumn |
+ @Resources.ErrorPageHtml_ValueColumn |
+
+
+
+ @foreach (var kv in Model.Environment.OrderBy(kv => kv.Key))
{
-
-
- #line default
- #line hidden
-WriteLiteral(" \r\n | ");
-
-
- #line 262 "ErrorPage.cshtml"
- Write(kv.Key);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n ");
-
-
- #line 263 "ErrorPage.cshtml"
- Write(kv.Value);
-
-
- #line default
- #line hidden
-WriteLiteral(" | \r\n
\r\n");
-
-
- #line 265 "ErrorPage.cshtml"
+
+ | @kv.Key |
+ @kv.Value |
+
}
-
-
- #line default
- #line hidden
-WriteLiteral(" \r\n
\r\n
\r\n");
-
- */
- #line 269 "ErrorPage.cshtml"
+
+
+
+ */
}
-
- #line default
- #line hidden
-WriteLiteral(" \r\n \r\n \r\n\r\n");
+#line default
+#line hidden
+ WriteLiteral(" \r\n \r\n\r\n");
}
}
}
-
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
index d280bf966e..ff275222dd 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cshtml
@@ -7,7 +7,7 @@
///
///
///
- public Views.ErrorPageModel Model { get; set; }
+ public ErrorPageModel Model { get; set; }
}
@{
Response.StatusCode = 500;
@@ -17,22 +17,23 @@
string location = string.Empty;
}
-
+
@Resources.ErrorPageHtml_Title
+ Hello
@Resources.ErrorPageHtml_UnhandledException
@if (Model.Options.ShowExceptionDetails)
{
foreach (var errorDetail in Model.ErrorDetails)
{
@errorDetail.Error.GetType().Name: @errorDetail.Error.Message
- {
+ @{
StackFrame firstFrame = null;
firstFrame = errorDetail.StackFrames.FirstOrDefault();
if (firstFrame != null)
@@ -43,7 +44,7 @@
{
location = errorDetail.Error.TargetSite.DeclaringType.FullName + "." + errorDetail.Error.TargetSite.Name;
}*/
- }
+ }
if (!string.IsNullOrEmpty(location) && firstFrame != null && !string.IsNullOrEmpty(firstFrame.File))
{
@location in @System.IO.Path.GetFileName(firstFrame.File), line @firstFrame.Line
@@ -272,10 +273,10 @@
*/
}
-
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
index f00df0918c..59cc4a5b3a 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
@@ -1,5 +1,4 @@
-
-(function ($) {
+(function (window, undefined) {
$('.collapsable').hide();
$('.page').hide();
$('#stackpage').show();
@@ -33,4 +32,4 @@
}
});
-})(jQuery);
+})(window);
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
deleted file mode 100644
index ca629b1435..0000000000
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.tt
+++ /dev/null
@@ -1,51 +0,0 @@
-<#@ template debug="false" hostspecific="true" language="C#" #>
-<#@ assembly name="System.Core" #>
-<#@ assembly name="System.Web.Razor" #>
-<#@ import namespace="System.Linq" #>
-<#@ import namespace="System.Text" #>
-<#@ import namespace="System.Globalization" #>
-<#@ import namespace="System.IO" #>
-<#@ import namespace="System.Collections.Generic" #>
-<#@ import namespace="System.Web.Razor" #>
-<#@ import namespace="System.Web.Razor.Text" #>
-<#@ output extension=".cs" #>
-<#
-var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
-host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
-var engine = new RazorTemplateEngine(host);
-var path = Host.ResolvePath("ErrorPage.cshtml");
-
-var code = engine.GenerateCode(
- new System.IO.StreamReader(path),
- "ErrorPage",
- "Microsoft.Owin.Diagnostics.Views",
- @"ErrorPage.cshtml");
-
-var provider = new Microsoft.CSharp.CSharpCodeProvider();
-var writer = new System.IO.StringWriter();
-provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
-var source = writer.ToString();
-var startIndex = 0;
-while(startIndex < source.Length)
-{
- var startMatch = @"Write(@""[[";
- var startCode = @"WriteLiteral(@""";
- var endMatch = @"]]"");";
- var endCode = @""");";
- startIndex = source.IndexOf(startMatch, startIndex);
- if (startIndex == -1)
- {
- break;
- }
- var endIndex = source.IndexOf(endMatch, startIndex);
- if (endIndex == -1)
- {
- break;
- }
- var fileName = source.Substring(startIndex + startMatch.Length, endIndex - (startIndex + startMatch.Length));
- var replacement = File.ReadAllText(Host.ResolvePath(fileName)).Replace("\"", "\"\"");
- source = source.Substring(0, startIndex) + startCode + replacement + endCode + source.Substring(endIndex + endMatch.Length);
- startIndex = startIndex + startCode.Length + replacement.Length + endCode.Length;
- }
-#>
-<#=source#>
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
index 5c22877b46..52aff9201c 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.cs
@@ -1,3953 +1,3806 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.34006
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
+namespace Microsoft.AspNet.Diagnostics.Views
+{
+#line 1 "WelcomePage.cshtml"
+using System
-namespace Microsoft.AspNet.Diagnostics.Views {
-
- #line 1 "WelcomePage.cshtml"
- using System;
-
- #line default
- #line hidden
-
-
- public class WelcomePage : Microsoft.AspNet.Diagnostics.Views.BaseView {
-
+#line default
#line hidden
-
- public WelcomePage() {
+ ;
+ using System.Threading.Tasks;
+
+ public class WelcomePage : Microsoft.AspNet.Diagnostics.Views.BaseView
+ {
+ #line hidden
+ public WelcomePage()
+ {
}
-
- public override void Execute() {
-
- #line 2 "WelcomePage.cshtml"
+
+ public override async Task ExecuteAsync()
+ {
+#line 2 "WelcomePage.cshtml"
Response.ContentType = "text/html";
-
- #line default
- #line hidden
-WriteLiteral("\r\n\r\n(System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
-
- #line default
- #line hidden
-, 92), false)
-);
-
-WriteLiteral(">\r\n\r\n \r\n ");
-
-
- #line 9 "WelcomePage.cshtml"
- Write(Resources.WelcomeTitle);
-
-
- #line default
- #line hidden
-WriteLiteral("\r\n \r\n \r\n\r\n\r\n \r\n
\r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 250499), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 250541), Tuple.Create("\"", 250590)
-
- #line 291 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 250549), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 250549), false)
-);
-
-WriteLiteral(" width=\"274\"");
-
-WriteLiteral(" height=\"274\"");
-
-WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_Browser
-
- #line default
- #line hidden
-, 253697), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 253737), Tuple.Create("\"", 253784)
-
- #line 294 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 253745), Tuple.Create
(Resources.WelcomePageImageText_Browser
-
- #line default
- #line hidden
-, 253745), false)
-);
-
-WriteLiteral(" width=\"384\"");
-
-WriteLiteral(" height=\"305\"");
-
-WriteLiteral(" />:-|
\r\n \r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 260233), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 260275), Tuple.Create("\"", 260324)
-
- #line 298 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 260283), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 260283), false)
-);
-
-WriteLiteral(" width=\"274\"");
-
-WriteLiteral(" height=\"274\"");
-
-WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 269125), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 269167), Tuple.Create("\"", 269216)
-
- #line 301 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 269175), Tuple.Create
(Resources.WelcomePageImageText_LightBulb
-
- #line default
- #line hidden
-, 269175), false)
-);
-
-WriteLiteral(" width=\"346\"");
-
-WriteLiteral(" height=\"658\"");
-
-WriteLiteral(" />\r\n
\r\n

(Resources.WelcomePageImageText_Skyline
-
- #line default
- #line hidden
-, 284091), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 284131), Tuple.Create("\"", 284178)
-
- #line 304 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 284139), Tuple.Create
(Resources.WelcomePageImageText_Skyline
-
- #line default
- #line hidden
-, 284139), false)
-);
-
-WriteLiteral(" width=\"1212\"");
-
-WriteLiteral(" height=\"202\"");
-
-WriteLiteral(" />\r\n
\r\n
\r\n\r\n \r\n
");
-
-
- #line 309 "WelcomePage.cshtml"
- Write(Resources.WelcomeHeader);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n
");
-
-
- #line 310 "WelcomePage.cshtml"
- Write(Resources.WelcomeStarted);
-
-
- #line default
- #line hidden
-WriteLiteral("
\r\n
");
-
-
- #line 311 "WelcomePage.cshtml"
- Write(Resources.WelcomeLearnOwin);
-
-
- #line default
- #line hidden
-WriteLiteral("\r\n \r\n

(Resources.WelcomePageImageText_LearnMore
-
- #line default
- #line hidden
-, 287037), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 287079), Tuple.Create("\"", 287128)
-
- #line 314 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 287087), Tuple.Create
(Resources.WelcomePageImageText_LearnMore
-
- #line default
- #line hidden
-, 287087), false)
-);
-
-WriteLiteral(" width=\"58\"");
-
-WriteLiteral(" height=\"29\"");
-
-WriteLiteral(" /> \r\n \r\n
");
-
-
- #line 316 "WelcomePage.cshtml"
- Write(Resources.WelcomeLearnMicrosoftOwin);
-
-
- #line default
- #line hidden
-WriteLiteral("\r\n

(Resources.WelcomePageImageText_LearnMore
-
- #line default
- #line hidden
-, 289803), false)
-);
-
-WriteAttribute("title", Tuple.Create(" title=\"", 289845), Tuple.Create("\"", 289894)
-
- #line 318 "WelcomePage.cshtml"
-, Tuple.Create(Tuple.Create("", 289853), Tuple.Create
(Resources.WelcomePageImageText_LearnMore
-
- #line default
- #line hidden
-, 289853), false)
-);
-
-WriteLiteral(" width=\"58\"");
-
-WriteLiteral(" height=\"29\"");
-
-WriteLiteral(" /> \r\n \r\n
\r\n\r\n\r\n\r\n");
-
+#line default
+#line hidden
+
+ WriteLiteral("\r\n\r\n(
+#line 6 "WelcomePage.cshtml"
+ System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
+
+#line default
+#line hidden
+ , 92), false));
+ WriteLiteral(">\r\n\r\n \r\n ");
+ Write(
+#line 9 "WelcomePage.cshtml"
+ Resources.WelcomeTitle
+
+#line default
+#line hidden
+ );
+
+ WriteLiteral("\r\n \r\n " +
+" \r\n\r\n\r\n \r\n
\r\n
\r\n

(
+#line 291 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 250499), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 250541), Tuple.Create("\"", 250590),
+ Tuple.Create(Tuple.Create("", 250549), Tuple.Create
(
+#line 291 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 250549), false));
+ WriteLiteral(" width=\"274\" height=\"274\" />\r\n
\r\n

(
+#line 294 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Browser
+
+#line default
+#line hidden
+ , 253697), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 253737), Tuple.Create("\"", 253784),
+ Tuple.Create(Tuple.Create("", 253745), Tuple.Create
(
+#line 294 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Browser
+
+#line default
+#line hidden
+ , 253745), false));
+ WriteLiteral(" width=\"384\" height=\"305\" />:-|
\r\n \r\n
\r\n

(
+#line 298 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 260233), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 260275), Tuple.Create("\"", 260324),
+ Tuple.Create(Tuple.Create("", 260283), Tuple.Create
(
+#line 298 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 260283), false));
+ WriteLiteral(" width=\"274\" height=\"274\" />\r\n
\r\n " +
+"

(
+#line 301 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 269125), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 269167), Tuple.Create("\"", 269216),
+ Tuple.Create(Tuple.Create("", 269175), Tuple.Create
(
+#line 301 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
+
+#line default
+#line hidden
+ , 269175), false));
+ WriteLiteral(" width=\"346\" height=\"658\" />\r\n
\r\n " +
+"

(
+#line 304 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Skyline
+
+#line default
+#line hidden
+ , 284091), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 284131), Tuple.Create("\"", 284178),
+ Tuple.Create(Tuple.Create("", 284139), Tuple.Create
(
+#line 304 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Skyline
+
+#line default
+#line hidden
+ , 284139), false));
+ WriteLiteral(" width=\"1212\" height=\"202\" />\r\n
\r\n
\r\n\r\n \r\n
");
+ Write(
+#line 309 "WelcomePage.cshtml"
+ Resources.WelcomeHeader
+
+#line default
+#line hidden
+ );
+
+ WriteLiteral("
\r\n
");
+ Write(
+#line 310 "WelcomePage.cshtml"
+ Resources.WelcomeStarted
+
+#line default
+#line hidden
+ );
+
+ WriteLiteral("
\r\n
");
+ Write(
+#line 311 "WelcomePage.cshtml"
+ Resources.WelcomeLearnOwin
+
+#line default
+#line hidden
+ );
+
+ WriteLiteral("\r\n \r\n

(
+#line 314 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LearnMore
+
+#line default
+#line hidden
+ , 287037), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 287079), Tuple.Create("\"", 287128),
+ Tuple.Create(Tuple.Create("", 287087), Tuple.Create
(
+#line 314 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LearnMore
+
+#line default
+#line hidden
+ , 287087), false));
+ WriteLiteral(" width=\"58\" height=\"29\" /> \r\n \r\n
");
+ Write(
+#line 316 "WelcomePage.cshtml"
+ Resources.WelcomeLearnMicrosoftOwin
+
+#line default
+#line hidden
+ );
+
+ WriteLiteral("\r\n

(
+#line 318 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LearnMore
+
+#line default
+#line hidden
+ , 289803), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 289845), Tuple.Create("\"", 289894),
+ Tuple.Create(Tuple.Create("", 289853), Tuple.Create
(
+#line 318 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LearnMore
+
+#line default
+#line hidden
+ , 289853), false));
+ WriteLiteral(" width=\"58\" height=\"29\" /> \r\n \r\n
\r\n\r\n\r\n\r\n");
}
}
}
-
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt b/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
deleted file mode 100644
index 3808f5d431..0000000000
--- a/src/Microsoft.AspNet.Diagnostics/Views/WelcomePage.tt
+++ /dev/null
@@ -1,50 +0,0 @@
-<#@ template debug="false" hostspecific="true" language="C#" #>
-<#@ assembly name="System.Core" #>
-<#@ assembly name="System.Web.Razor" #>
-<#@ import namespace="System.Linq" #>
-<#@ import namespace="System.Text" #>
-<#@ import namespace="System.IO" #>
-<#@ import namespace="System.Collections.Generic" #>
-<#@ import namespace="System.Web.Razor" #>
-<#@ import namespace="System.Web.Razor.Text" #>
-<#@ output extension=".cs" #>
-<#
-var host = new RazorEngineHost(new CSharpRazorCodeLanguage());
-host.DefaultBaseClass = "Microsoft.Owin.Diagnostics.Views.BaseView";
-var engine = new RazorTemplateEngine(host);
-var path = Host.ResolvePath("WelcomePage.cshtml");
-
-var code = engine.GenerateCode(
- new System.IO.StreamReader(path),
- "WelcomePage",
- "Microsoft.Owin.Diagnostics.Views",
- "WelcomePage.cshtml");
-
-var provider = new Microsoft.CSharp.CSharpCodeProvider();
-var writer = new System.IO.StringWriter();
-provider.GenerateCodeFromCompileUnit(code.GeneratedCode, writer, null);
-var source = writer.ToString();
-var startIndex = 0;
-while(startIndex < source.Length)
-{
- var startMatch = @"Write(@""[[";
- var startCode = @"WriteLiteral(@""";
- var endMatch = @"]]"");";
- var endCode = @""");";
- startIndex = source.IndexOf(startMatch, startIndex);
- if (startIndex == -1)
- {
- break;
- }
- var endIndex = source.IndexOf(endMatch, startIndex);
- if (endIndex == -1)
- {
- break;
- }
- var fileName = source.Substring(startIndex + startMatch.Length, endIndex - (startIndex + startMatch.Length));
- var replacement = File.ReadAllText(Host.ResolvePath(fileName)).Replace("\"", "\"\"");
- source = source.Substring(0, startIndex) + startCode + replacement + endCode + source.Substring(endIndex + endMatch.Length);
- startIndex = startIndex + startCode.Length + replacement.Length + endCode.Length;
- }
-#>
-<#=source#>
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
index a37b92cd7e..0236abeaa6 100644
--- a/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
@@ -48,8 +48,7 @@ namespace Microsoft.AspNet.Diagnostics
{
// Dynamically generated for LOC.
var welcomePage = new WelcomePage();
- welcomePage.Execute(context);
- return Task.FromResult(0);
+ return welcomePage.ExecuteAsync(context);
}
return _next(context);
diff --git a/src/PageGenerator/PageGenerator.kproj b/src/PageGenerator/PageGenerator.kproj
new file mode 100644
index 0000000000..957baaf4c3
--- /dev/null
+++ b/src/PageGenerator/PageGenerator.kproj
@@ -0,0 +1,26 @@
+
+
+
+ 12.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ 4d4a785a-ecb9-4916-a88f-0fd306ee3b74
+ Console
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/PageGenerator/Program.cs b/src/PageGenerator/Program.cs
new file mode 100644
index 0000000000..c68c55e9ca
--- /dev/null
+++ b/src/PageGenerator/Program.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Microsoft.AspNet.Razor;
+using Microsoft.Net.Runtime;
+
+namespace PageGenerator
+{
+ public class Program
+ {
+ private readonly ILibraryManager _libraryManager;
+
+ public Program(ILibraryManager libraryManager)
+ {
+ _libraryManager = libraryManager;
+ }
+
+ public void Main(string[] args)
+ {
+ var diagnosticsLibInfo = _libraryManager.GetLibraryInformation("Microsoft.AspNet.Diagnostics");
+ var viewBasePath = Path.Combine(Path.GetDirectoryName(diagnosticsLibInfo.Path), "Views");
+
+ Console.WriteLine("Generating code files for views in {0}", viewBasePath);
+ Console.WriteLine();
+
+ var cshtmlFiles = GetCshtmlFiles(viewBasePath);
+
+ var fileCount = 0;
+ foreach (var fileName in cshtmlFiles)
+ {
+ Console.WriteLine(" Generating code file for view {0}...", Path.GetFileName(fileName));
+ GenerateCodeFile(fileName);
+ Console.WriteLine(" Done!");
+ fileCount++;
+ }
+
+ Console.WriteLine();
+ Console.WriteLine("{0} files successfully generated.", fileCount);
+ Console.WriteLine();
+
+ Console.Write("Press enter to close application...");
+ Console.ReadLine();
+ }
+
+ private static IEnumerable GetCshtmlFiles(string path)
+ {
+ if (!Directory.Exists(path))
+ {
+ throw new ArgumentException("path");
+ }
+
+ return Directory.EnumerateFiles(path, "*.cshtml");
+ }
+
+ private static void GenerateCodeFile(string cshtmlFilePath)
+ {
+ var basePath = Path.GetDirectoryName(cshtmlFilePath);
+ var fileName = Path.GetFileName(cshtmlFilePath);
+ var fileNameNoExtension = Path.GetFileNameWithoutExtension(fileName);
+ var codeLang = new CSharpRazorCodeLanguage();
+ var host = new RazorEngineHost(codeLang);
+ host.DefaultBaseClass = "Microsoft.AspNet.Diagnostics.Views.BaseView";
+ var engine = new RazorTemplateEngine(host);
+
+ using (var fileStream = File.OpenText(cshtmlFilePath))
+ {
+ var code = engine.GenerateCode(
+ input: fileStream,
+ className: fileNameNoExtension,
+ rootNamespace: "Microsoft.AspNet.Diagnostics.Views",
+ sourceFileName: fileName);
+
+ var source = code.GeneratedCode;
+ var startIndex = 0;
+ while (startIndex < source.Length)
+ {
+ var startMatch = @"<%$ include: ";
+ var endMatch = @" %>";
+ startIndex = source.IndexOf(startMatch, startIndex);
+ if (startIndex == -1)
+ {
+ break;
+ }
+ var endIndex = source.IndexOf(endMatch, startIndex);
+ if (endIndex == -1)
+ {
+ break;
+ }
+ var includeFileName = source.Substring(startIndex + startMatch.Length, endIndex - (startIndex + startMatch.Length));
+ includeFileName = SanitizeFileName(includeFileName);
+ Console.WriteLine(" Inlining file {0}", includeFileName);
+ var replacement = File.ReadAllText(Path.Combine(basePath, includeFileName)).Replace("\"", "\\\"").Replace("\r\n", "\\r\\n");
+ source = source.Substring(0, startIndex) + replacement + source.Substring(endIndex + endMatch.Length);
+ startIndex = startIndex + replacement.Length;
+ }
+ File.WriteAllText(Path.Combine(basePath, string.Format("{0}.cs", fileNameNoExtension)), source);
+ }
+ }
+
+ private static string SanitizeFileName(string fileName)
+ {
+ // The Razor generated code sometimes splits strings across multiple lines
+ // which can hit the include file name, so we need to strip out the non-filename chars.
+ //ErrorPage.j" +
+ //"s
+
+ var invalidChars = new List(Path.GetInvalidFileNameChars());
+ invalidChars.Add('+');
+ invalidChars.Add(' ');
+
+ return string.Join(string.Empty, fileName.Where(c => !invalidChars.Contains(c)).ToArray());
+ }
+ }
+}
diff --git a/src/PageGenerator/Project.json b/src/PageGenerator/Project.json
new file mode 100644
index 0000000000..159d891d01
--- /dev/null
+++ b/src/PageGenerator/Project.json
@@ -0,0 +1,20 @@
+{
+ "dependencies": {
+ "Microsoft.AspNet.Diagnostics": "",
+ "Microsoft.Net.Runtime.Interfaces": "0.1.0-alpha-*",
+ "Microsoft.AspNet.Mvc": "0.1.0-alpha-*"
+ },
+
+ "configurations" : {
+ "net45" : {
+ "dependencies": {
+ "System.Runtime": ""
+ }
+ },
+ "k10" : {
+ "dependencies": {
+ "System.Console": "4.0.0.0"
+ }
+ }
+ }
+}
From ba5f230c189d297c6319c5e142d6a4218b85a969 Mon Sep 17 00:00:00 2001
From: Louis DeJardin
Date: Fri, 2 May 2014 16:19:37 -0700
Subject: [PATCH 009/603] Updating build scripts
---
.gitignore | 4 ++--
build.cmd | 3 +++
build.sh | 30 ++++++++++++++++++++++++++++++
3 files changed, 35 insertions(+), 2 deletions(-)
create mode 100644 build.sh
diff --git a/.gitignore b/.gitignore
index 52351df12f..aba9c594d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@ PublishProfiles/
_ReSharper.*
nuget.exe
*net45.csproj
+*net451.csproj
*k10.csproj
*.psess
*.vsp
@@ -21,5 +22,4 @@ nuget.exe
*DS_Store
*.ncrunchsolution
*.*sdf
-*.ipch
-*.sln.ide
\ No newline at end of file
+*.ipch
\ No newline at end of file
diff --git a/build.cmd b/build.cmd
index 7045ee1f84..903d532df3 100644
--- a/build.cmd
+++ b/build.cmd
@@ -18,6 +18,9 @@ copy %CACHED_NUGET% .nuget\nuget.exe > nul
IF EXIST packages\KoreBuild goto run
.nuget\NuGet.exe install KoreBuild -ExcludeVersion -o packages -nocache -pre
.nuget\NuGet.exe install Sake -version 0.2 -o packages -ExcludeVersion
+CALL packages\KoreBuild\build\kvm upgrade -svr50 -x86
+CALL packages\KoreBuild\build\kvm install default -svrc50 -x86
:run
+CALL packages\KoreBuild\build\kvm use default -svr50 -x86
packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %*
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000000..db1e0c3dde
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+if test `uname` = Darwin; then
+ cachedir=~/Library/Caches/KBuild
+else
+ if x$XDG_DATA_HOME = x; then
+ cachedir=$HOME/.local/share
+ else
+ cachedir=$XDG_DATA_HOME;
+ fi
+fi
+mkdir -p $cachedir
+
+url=https://www.nuget.org/nuget.exe
+
+if test ! -f $cachedir/nuget.exe; then
+ wget -o $cachedir/nuget.exe $url 2>/dev/null || curl -o $cachedir/nuget.exe --location $url /dev/null
+fi
+
+if test ! -e .nuget; then
+ mkdir .nuget
+ cp $cachedir/nuget.exe .nuget
+fi
+
+if test ! -d packages/KoreBuild; then
+ mono .nuget/nuget.exe install KoreBuild -ExcludeVersion -o packages -nocache -pre
+ mono .nuget/nuget.exe install Sake -version 0.2 -o packages -ExcludeVersion
+fi
+
+mono packages/Sake/tools/Sake.exe -I packages/KoreBuild/build -f makefile.shade "$@"
\ No newline at end of file
From 257b2abc432bfc0022d62de33d7d0d3bf8a44a0a Mon Sep 17 00:00:00 2001
From: DamianEdwards
Date: Thu, 1 May 2014 18:18:27 -0700
Subject: [PATCH 010/603] Removed jQuery from the error page: - All
functionality working - Tested in IE11/10/9/8 (via emulation mode), and
Chrome latest - Made the clickable areas cursor a pointer - #11
---
.../Views/ErrorPage.cs | 313 +++++++++---------
.../Views/ErrorPage.cshtml | 9 +-
.../Views/ErrorPage.css | 98 +++---
.../Views/ErrorPage.js | 210 ++++++++++--
4 files changed, 390 insertions(+), 240 deletions(-)
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
index 022dcc616b..d21b4b5b9d 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
@@ -30,9 +30,6 @@ using Views
{
#line 6 "ErrorPage.cshtml"
- ///
- ///
- ///
public ErrorPageModel Model { get; set; }
#line default
@@ -44,7 +41,7 @@ using Views
public override async Task ExecuteAsync()
{
-#line 12 "ErrorPage.cshtml"
+#line 9 "ErrorPage.cshtml"
Response.StatusCode = 500;
// TODO: Response.ReasonPhrase = "Internal Server Error";
@@ -56,28 +53,28 @@ using Views
#line hidden
WriteLiteral("\r\n\r\n(
-#line 20 "ErrorPage.cshtml"
+ WriteAttribute("lang", Tuple.Create(" lang=\"", 415), Tuple.Create("\"", 476),
+ Tuple.Create(Tuple.Create("", 422), Tuple.Create(
+#line 17 "ErrorPage.cshtml"
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
#line default
#line hidden
- , 471), false));
+ , 422), false));
WriteLiteral(" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n \r\n \r\n ");
Write(
-#line 23 "ErrorPage.cshtml"
+#line 20 "ErrorPage.cshtml"
Resources.ErrorPageHtml_Title
#line default
#line hidden
);
- WriteLiteral("\r\n
- Hello
@Resources.ErrorPageHtml_UnhandledException
@if (Model.Options.ShowExceptionDetails)
{
@@ -123,7 +119,7 @@
@if (frame.PreContextCode != null)
{
-
+
@foreach (var line in frame.PreContextCode)
{
- @line
@@ -136,7 +132,7 @@
@if (frame.PostContextCode != null)
{
-
+
@foreach (var line in frame.PostContextCode)
{
- @line
@@ -272,7 +268,6 @@
*/
}
-
\r\n \r\n\r\n");
}
}
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
index 4f6ca6a2a4..da220c76ad 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.js
@@ -135,9 +135,9 @@
if (el.addEventListener) { // DOM Events
el.addEventListener(eventName, callback, false);
} else if (el.attachEvent) { // IE8 events
- el.attachEvent('on' + eventName, callback)
+ el.attachEvent("on" + eventName, callback)
} else {
- el['on' + type] = callback;
+ el["on" + type] = callback;
}
});
diff --git a/src/PageGenerator/Project.json b/src/PageGenerator/Project.json
index 159d891d01..8ba728063f 100644
--- a/src/PageGenerator/Project.json
+++ b/src/PageGenerator/Project.json
@@ -2,7 +2,7 @@
"dependencies": {
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.Net.Runtime.Interfaces": "0.1.0-alpha-*",
- "Microsoft.AspNet.Mvc": "0.1.0-alpha-*"
+ "Microsoft.AspNet.Razor": "0.1.0-alpha-*"
},
"configurations" : {
From f66a0cb42993c1a74b0e68f20208af8aa0d9fd62 Mon Sep 17 00:00:00 2001
From: Wei Wang
Date: Mon, 5 May 2014 19:16:34 -0700
Subject: [PATCH 012/603] Remove unused dependency
---
src/Microsoft.AspNet.Diagnostics/project.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
index 532c4c66cb..2cfdfd0974 100644
--- a/src/Microsoft.AspNet.Diagnostics/project.json
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -2,7 +2,6 @@
"version": "0.1-alpha-*",
"dependencies": {
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
- "Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
"Microsoft.AspNet.PipelineCore": "0.1-alpha-*",
"Microsoft.AspNet.Abstractions": "0.1-alpha-*",
"Microsoft.AspNet.FeatureModel": "0.1-alpha-*"
From 0c48454ad2f55011a4b314e78360144d19119902 Mon Sep 17 00:00:00 2001
From: Chris Ross
Date: Tue, 6 May 2014 10:39:14 -0700
Subject: [PATCH 013/603] Fix HttpAbstractions dependency issues.
---
DiagnosticsPages.sln | 3 +++
samples/ErrorPageSample/Startup.cs | 3 +--
samples/ErrorPageSample/project.json | 2 +-
samples/WelcomePageSample/Startup.cs | 2 +-
samples/WelcomePageSample/project.json | 2 +-
src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs | 2 +-
src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs | 3 ++-
src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs | 2 +-
src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs | 4 ++--
src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs | 3 ++-
src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs | 2 +-
src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs | 2 --
src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs | 2 +-
src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs | 4 ++--
src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs | 3 ++-
src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs | 2 +-
src/Microsoft.AspNet.Diagnostics/project.json | 2 +-
17 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/DiagnosticsPages.sln b/DiagnosticsPages.sln
index 87fd04d83a..efade4376d 100644
--- a/DiagnosticsPages.sln
+++ b/DiagnosticsPages.sln
@@ -27,6 +27,7 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Any CPU.ActiveCfg = Debug|x86
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.Build.0 = Debug|x86
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.ActiveCfg = Debug|x86
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.Build.0 = Debug|x86
{C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Any CPU.ActiveCfg = Release|x86
@@ -46,6 +47,7 @@ Global
{68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.Build.0 = Release|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Any CPU.ActiveCfg = Debug|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.Build.0 = Debug|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.ActiveCfg = Debug|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.Build.0 = Debug|x86
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Any CPU.ActiveCfg = Release|x86
@@ -55,6 +57,7 @@ Global
{589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.Build.0 = Release|x86
{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Any CPU.ActiveCfg = Debug|x86
{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.Build.0 = Debug|x86
{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.ActiveCfg = Debug|x86
{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.Build.0 = Debug|x86
{4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Any CPU.ActiveCfg = Release|x86
diff --git a/samples/ErrorPageSample/Startup.cs b/samples/ErrorPageSample/Startup.cs
index bed1d3cc07..096cfbfed9 100644
--- a/samples/ErrorPageSample/Startup.cs
+++ b/samples/ErrorPageSample/Startup.cs
@@ -1,6 +1,5 @@
using System;
-using Microsoft.AspNet;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Builder;
namespace ErrorPageSample
{
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index 26a23b8136..f7f3c958ca 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -4,7 +4,7 @@
"Helios" : "0.1-alpha-*",
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
- "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.Http": "0.1-alpha-*",
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-*",
"Microsoft.AspNet.Hosting": "0.1-alpha-*"
},
diff --git a/samples/WelcomePageSample/Startup.cs b/samples/WelcomePageSample/Startup.cs
index ca9ccc7148..b5c2bcad83 100644
--- a/samples/WelcomePageSample/Startup.cs
+++ b/samples/WelcomePageSample/Startup.cs
@@ -1,5 +1,5 @@
using Microsoft.AspNet;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Builder;
namespace WelcomePageSample
{
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index 90691ce5ab..be23811ac0 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -4,7 +4,7 @@
"Helios" : "0.1-alpha-*",
"Microsoft.AspNet.Diagnostics": "",
"Microsoft.AspNet.HttpFeature": "0.1-alpha-*",
- "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.Http": "0.1-alpha-*",
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-*",
"Microsoft.AspNet.Hosting": "0.1-alpha-*"
},
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
index a68c2ca0a2..b8c6a6f712 100644
--- a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageExtensions.cs
@@ -5,7 +5,7 @@ using System;
using Microsoft.AspNet.Abstractions;
using Microsoft.AspNet.Diagnostics;
-namespace Microsoft.AspNet
+namespace Microsoft.AspNet.Builder
{
///
/// IBuilder extensions for the DiagnosticsPageMiddleware.
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
index 7c71a0d745..dc2c75f541 100644
--- a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageMiddleware.cs
@@ -4,8 +4,9 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics.Views;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics
{
diff --git a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
index 3ba61f8ee0..0e6053fe41 100644
--- a/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
+++ b/src/Microsoft.AspNet.Diagnostics/DiagnosticsPageOptions.cs
@@ -2,7 +2,7 @@
#if DEBUG
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics
{
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
index 4f3576538a..1583d98a03 100644
--- a/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageExtensions.cs
@@ -1,10 +1,10 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System;
-using Microsoft.AspNet.Abstractions;
using Microsoft.AspNet.Diagnostics;
+using Microsoft.AspNet.Http;
-namespace Microsoft.AspNet
+namespace Microsoft.AspNet.Builder
{
///
/// IBuilder extension methods for the ErrorPageMiddleware.
diff --git a/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
index 774b9d8bdf..6222a335e9 100644
--- a/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
+++ b/src/Microsoft.AspNet.Diagnostics/ErrorPageMiddleware.cs
@@ -7,8 +7,9 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
+using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics.Views;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics
{
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
index 934bf7096b..3a09de614c 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/BaseView.cs
@@ -1,11 +1,11 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-using Microsoft.AspNet.Abstractions;
using System;
using System.Globalization;
using System.IO;
using System.Net;
using System.Threading.Tasks;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics.Views
{
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
index b08261c64a..f63f2c7219 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorDetails.cs
@@ -16,8 +16,6 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
namespace Microsoft.AspNet.Diagnostics.Views
{
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
index cb2f5f63c8..3bc18ba436 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPageModel.cs
@@ -1,8 +1,8 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-using Microsoft.AspNet.Abstractions;
using System;
using System.Collections.Generic;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics.Views
{
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
index 711bb33b17..37605a8dac 100644
--- a/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageExtensions.cs
@@ -1,10 +1,10 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Http;
using Microsoft.AspNet.Diagnostics;
-namespace Microsoft.AspNet
+namespace Microsoft.AspNet.Builder
{
///
/// IBuilder extensions for the WelcomePageMiddleware.
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
index 0236abeaa6..f2937f13ed 100644
--- a/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageMiddleware.cs
@@ -4,7 +4,8 @@ using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNet.Diagnostics.Views;
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Builder;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics
{
diff --git a/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs b/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
index 1ea64b6b2d..9b03cb9dc9 100644
--- a/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
+++ b/src/Microsoft.AspNet.Diagnostics/WelcomePageOptions.cs
@@ -1,6 +1,6 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
-using Microsoft.AspNet.Abstractions;
+using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Diagnostics
{
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
index 2cfdfd0974..0f3037642e 100644
--- a/src/Microsoft.AspNet.Diagnostics/project.json
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -3,7 +3,7 @@
"dependencies": {
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
"Microsoft.AspNet.PipelineCore": "0.1-alpha-*",
- "Microsoft.AspNet.Abstractions": "0.1-alpha-*",
+ "Microsoft.AspNet.Http": "0.1-alpha-*",
"Microsoft.AspNet.FeatureModel": "0.1-alpha-*"
},
"configurations": {
From e651ebf6aa80ac86513bf4e7a31bb3bb5e182804 Mon Sep 17 00:00:00 2001
From: Chris Ross
Date: Tue, 6 May 2014 14:33:43 -0700
Subject: [PATCH 014/603] Fixing missing FileSystem dependency.
---
samples/ErrorPageSample/project.json | 2 --
samples/WelcomePageSample/project.json | 2 --
src/Microsoft.AspNet.Diagnostics/project.json | 1 +
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/samples/ErrorPageSample/project.json b/samples/ErrorPageSample/project.json
index f7f3c958ca..29a4252a0c 100644
--- a/samples/ErrorPageSample/project.json
+++ b/samples/ErrorPageSample/project.json
@@ -19,8 +19,6 @@
"System.Diagnostics.Tools": "4.0.0.0",
"System.Globalization": "4.0.10.0",
"System.IO": "4.0.0.0",
- "System.IO.FileSystem": "4.0.0.0",
- "System.IO.FileSystem.Primitives": "4.0.0.0",
"System.Linq": "4.0.0.0",
"System.Reflection": "4.0.10.0",
"System.Resources.ResourceManager": "4.0.0.0",
diff --git a/samples/WelcomePageSample/project.json b/samples/WelcomePageSample/project.json
index be23811ac0..577dcf8834 100644
--- a/samples/WelcomePageSample/project.json
+++ b/samples/WelcomePageSample/project.json
@@ -19,8 +19,6 @@
"System.Diagnostics.Tools": "4.0.0.0",
"System.Globalization": "4.0.10.0",
"System.IO": "4.0.0.0",
- "System.IO.FileSystem": "4.0.0.0",
- "System.IO.FileSystem.Primitives": "4.0.0.0",
"System.Linq": "4.0.0.0",
"System.Reflection": "4.0.10.0",
"System.Resources.ResourceManager": "4.0.0.0",
diff --git a/src/Microsoft.AspNet.Diagnostics/project.json b/src/Microsoft.AspNet.Diagnostics/project.json
index 0f3037642e..46cef35da9 100644
--- a/src/Microsoft.AspNet.Diagnostics/project.json
+++ b/src/Microsoft.AspNet.Diagnostics/project.json
@@ -16,6 +16,7 @@
"System.Diagnostics.Tools": "4.0.0.0",
"System.Globalization": "4.0.10.0",
"System.IO": "4.0.0.0",
+ "System.IO.FileSystem": "4.0.10.0",
"System.Linq": "4.0.0.0",
"System.Reflection": "4.0.10.0",
"System.Resources.ResourceManager": "4.0.0.0",
From 61beff8fd1b69785c58bae0bb4885687b58085fe Mon Sep 17 00:00:00 2001
From: DamianEdwards
Date: Mon, 5 May 2014 21:12:26 -0700
Subject: [PATCH 015/603] Added grunt to do JS & CSS validation: - Updated JS &
CSS files according to errors reported - Updated sake script to find all
npm/grunt folders and operate on those, rather than on root
Build installs node/npm locally before running grunt
Refactored makefile.shade a little
---
.gitignore | 3 +-
DiagnosticsPages.sln | 82 +-
makefile.shade | 49 +
src/Microsoft.AspNet.Diagnostics/.csslintrc | 7 +
src/Microsoft.AspNet.Diagnostics/.jshintrc | 3 +
.../Microsoft.AspNet.Diagnostics.kproj | 987 ++++++++++++++++++
.../Views/ErrorPage.cs | 4 +-
.../Views/ErrorPage.css | 24 +-
.../Views/ErrorPage.js | 4 +-
src/Microsoft.AspNet.Diagnostics/gruntfile.js | 32 +
src/Microsoft.AspNet.Diagnostics/package.json | 11 +
11 files changed, 1142 insertions(+), 64 deletions(-)
create mode 100644 src/Microsoft.AspNet.Diagnostics/.csslintrc
create mode 100644 src/Microsoft.AspNet.Diagnostics/.jshintrc
create mode 100644 src/Microsoft.AspNet.Diagnostics/gruntfile.js
create mode 100644 src/Microsoft.AspNet.Diagnostics/package.json
diff --git a/.gitignore b/.gitignore
index 08e21e25bf..2acc3e0dcb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,4 +23,5 @@ nuget.exe
*.ncrunchsolution
*.*sdf
*.ipch
-*.sln.ide
\ No newline at end of file
+*.sln.ide
+node_modules
\ No newline at end of file
diff --git a/DiagnosticsPages.sln b/DiagnosticsPages.sln
index efade4376d..a4acc59b29 100644
--- a/DiagnosticsPages.sln
+++ b/DiagnosticsPages.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.21628.1
+VisualStudioVersion = 14.0.21706.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{509A6F36-AD80-4A18-B5B1-717D38DFF29D}"
EndProject
@@ -25,46 +25,46 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Any CPU.ActiveCfg = Debug|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.ActiveCfg = Debug|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.Build.0 = Debug|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Any CPU.ActiveCfg = Release|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.Build.0 = Release|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|x86.ActiveCfg = Release|x86
- {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|x86.Build.0 = Release|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Any CPU.ActiveCfg = Debug|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|x86.ActiveCfg = Debug|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|x86.Build.0 = Debug|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Any CPU.ActiveCfg = Release|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.Build.0 = Release|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.ActiveCfg = Release|x86
- {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.Build.0 = Release|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Any CPU.ActiveCfg = Debug|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.ActiveCfg = Debug|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.Build.0 = Debug|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Any CPU.ActiveCfg = Release|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.Build.0 = Release|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.ActiveCfg = Release|x86
- {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.Build.0 = Release|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Any CPU.ActiveCfg = Debug|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.ActiveCfg = Debug|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.Build.0 = Debug|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Any CPU.ActiveCfg = Release|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.Build.0 = Release|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|x86.ActiveCfg = Release|x86
- {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|x86.Build.0 = Release|x86
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C5F59CBA-DF2D-4983-8CBB-11B6AF21B416}.Release|x86.ActiveCfg = Release|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {68A1F0E1-ECCE-46D1-B20F-C43EE5B097DE}.Release|x86.ActiveCfg = Release|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Any CPU.Build.0 = Release|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {589AC17F-9455-4764-8F82-FCD2AE58DA14}.Release|x86.ActiveCfg = Release|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4D4A785A-ECB9-4916-A88F-0FD306EE3B74}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/makefile.shade b/makefile.shade
index 6357ea2841..50e343e22c 100644
--- a/makefile.shade
+++ b/makefile.shade
@@ -1,3 +1,4 @@
+use namespace="System.Net"
var VERSION='0.1'
var FULL_VERSION='0.1'
@@ -5,3 +6,51 @@ var AUTHORS='Microsoft'
use-standard-lifecycle
k-standard-goals
+
+#install-node
+ var binDir = '${Path.Combine(Directory.GetCurrentDirectory(), "bin")}'
+ var nodeDir = '${Path.Combine(binDir, "node")}'
+
+ -// Check if node is already installed locally
+ var nodeVer = '0.10.28'
+ var nodeMsi = 'node-v${nodeVer}-x86.msi'
+ var nodeUrl = 'http://nodejs.org/dist/v${nodeVer}/${nodeMsi}'
+ var nodeMsiPath = '${Path.Combine(binDir, nodeMsi)}'
+ var nodeInstalled = '${Directory.Exists(nodeDir)}'
+ @{
+ Directory.CreateDirectory(nodeDir);
+ if (!nodeInstalled) {
+ // Download node installer msi
+ var wc = new WebClient();
+ wc.DownloadFile(nodeUrl, nodeMsiPath);
+ }
+ }
+
+ -// Extract it to local dir using msiexec:
+ exec program='msiexec' commandline='/a ${nodeMsiPath} /qb TARGETDIR=${nodeDir}' if='!nodeInstalled'
+
+#restore-npm-modules .install-node
+ @{
+ // Find all dirs that contain a package.json file that aren't installed node modules
+ var currentDir = Directory.GetCurrentDirectory();
+ var npmCmd = Path.Combine(currentDir, "bin\\node\\nodejs\\npm.cmd");
+ var npmDirs = Directory.GetFiles(currentDir, "package.json", SearchOption.AllDirectories)
+ .Where(p => p.IndexOf(Path.DirectorySeparatorChar + "node_modules" + Path.DirectorySeparatorChar) < 0)
+ .Select(p => Path.GetDirectoryName(p))
+ .Distinct();
+ }
+
+ exec program='${npmCmd}' commandline='install' workingdir='${dir}' each='var dir in npmDirs'
+
+#run-grunt .restore-npm-modules target='compile'
+ @{
+ // Find all dirs that contain a gruntfile.js file
+ var currentDir = Directory.GetCurrentDirectory();
+ var nodeExe = Path.Combine(currentDir, "bin\\node\\nodejs\\node.exe");
+ var gruntDirs = Directory.GetFiles(currentDir, "gruntfile.js", SearchOption.AllDirectories)
+ .Where(p => p.IndexOf(Path.DirectorySeparatorChar + "node_modules" + Path.DirectorySeparatorChar) < 0)
+ .Select(p => Path.GetDirectoryName(p))
+ .Distinct();
+ }
+
+ exec program='${nodeExe}' commandline='node_modules\\grunt-cli\\bin\\grunt' workingdir='${dir}' each='var dir in gruntDirs'
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/.csslintrc b/src/Microsoft.AspNet.Diagnostics/.csslintrc
new file mode 100644
index 0000000000..fda9775958
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/.csslintrc
@@ -0,0 +1,7 @@
+{
+ "unique-headings": false,
+ "ids": false,
+ "box-sizing": false,
+ "qualified-headings": false,
+ "display-property-grouping": false
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/.jshintrc b/src/Microsoft.AspNet.Diagnostics/.jshintrc
new file mode 100644
index 0000000000..077404aaa4
--- /dev/null
+++ b/src/Microsoft.AspNet.Diagnostics/.jshintrc
@@ -0,0 +1,3 @@
+{
+
+}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
index 6749d006c1..e26cfea10f 100644
--- a/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
+++ b/src/Microsoft.AspNet.Diagnostics/Microsoft.AspNet.Diagnostics.kproj
@@ -17,6 +17,993 @@
2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
index cc429e1755..c657b10dbb 100644
--- a/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
+++ b/src/Microsoft.AspNet.Diagnostics/Views/ErrorPage.cs
@@ -71,7 +71,7 @@ using Views
#line hidden
);
- WriteLiteral("\r\n \r\n " +
-" \r\n\r\n\r\n \r\n
\r\n
\r\n

(
-#line 291 "WelcomePage.cshtml"
+"ily: \'SegoeLight\', helvetica, sans-serif;\r\n font-weight: normal;\r\n " +
+" font-style: normal;\r\n }\r\n\r\n body {\r\n backgroun" +
+"d-color: #00abec;\r\n color: #fff;\r\n font-family: \'SegoeLigh" +
+"t\', helvetica, sans-serif;\r\n font-size: 18px;\r\n margin: 0;" +
+"\r\n padding: 0;\r\n }\r\n\r\n .content {\r\n position" +
+": absolute;\r\n left: 50px;\r\n top: 38px;\r\n width:" +
+" 440px;\r\n }\r\n\r\n .content .azureLogo {\r\n margin:" +
+" 0 0 65px 0;\r\n }\r\n\r\n .content .bodyHeadline {\r\n " +
+" margin: 35px 0 0;\r\n font-size: 40px;\r\n line-h" +
+"eight: 43px;\r\n }\r\n\r\n .content .bodyContent {\r\n " +
+" margin: 10px 0 30px 0;\r\n line-height: 22px;\r\n }\r\n\r" +
+"\n .content .bodyContent a {\r\n color: #fff;\r\n " +
+" text-decoration: none;\r\n }\r\n\r\n " +
+" .content .bodyContent a:hover {\r\n opacity: .7;\r\n " +
+" }\r\n\r\n .content .bodyCTA {\r\n color: #fff;" +
+"\r\n display: block;\r\n line-height: 30px;\r\n " +
+" height: 29px;\r\n width: 230px;\r\n cursor: poi" +
+"nter;\r\n text-decoration: none;\r\n position: relativ" +
+"e;\r\n }\r\n\r\n .content .bodyCTA.longer {\r\n " +
+" margin-top: 10px;\r\n width: 440px;\r\n }\r\n\r\n" +
+" .content .bodyCTA div {\r\n position: absolute;" +
+"\r\n overflow: hidden;\r\n width: 29px;\r\n " +
+" height: 29px;\r\n float: right;\r\n " +
+" top: 0;\r\n right: 0;\r\n }\r\n\r\n " +
+" .content .bodyCTA div img {\r\n position: absolute;\r\n" +
+" top: 0;\r\n left: 0;\r\n " +
+" border: 0;\r\n }\r\n\r\n .content .bodyCT" +
+"A:hover div img {\r\n left: -29px;\r\n }\r\n\r\n " +
+" .content .bodyCTA:hover {\r\n opacity: .7;\r\n " +
+" }\r\n\r\n .wrapper {\r\n width: 100%;\r\n height: 10" +
+"0%;\r\n overflow: hidden;\r\n min-width: 1200px;\r\n }\r\n\r" +
+"\n .innerwrapper {\r\n width: 384px;\r\n height: 100%;\r\n" +
+" margin-right: auto;\r\n margin-left: auto;\r\n }\r\n\r\n " +
+" .browser {\r\n position: absolute;\r\n display: block;\r\n" +
+" top: 400px;\r\n width: 384px;\r\n height: 305px;\r\n" +
+" cursor: default;\r\n z-index: 10;\r\n }\r\n\r\n " +
+" .browser div {\r\n width: 384px;\r\n height: 305px;\r\n" +
+" position: absolute;\r\n top: 40px;\r\n " +
+" left: 100px;\r\n font-size: 200px;\r\n text-align: le" +
+"ft;\r\n -webkit-touch-callout: none;\r\n -webkit-user-" +
+"select: none;\r\n -khtml-user-select: none;\r\n -moz-u" +
+"ser-select: none;\r\n -ms-user-select: none;\r\n user-" +
+"select: none;\r\n }\r\n\r\n .bulb {\r\n position: fixed;\r\n " +
+" margin-left: 20px;\r\n top: 0;\r\n }\r\n\r\n .light " +
+"{\r\n position: fixed;\r\n margin-left: 53px;\r\n top" +
+": 0;\r\n opacity: 1;\r\n }\r\n\r\n .bottom {\r\n posit" +
+"ion: fixed;\r\n bottom: 0;\r\n margin-right: auto;\r\n " +
+" margin-left: -303px;\r\n z-index: -1;\r\n height: 202px;\r\n " +
+" }\r\n \r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n

(
+#line 168 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 250499), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 250541), Tuple.Create("\"", 250590),
- Tuple.Create(Tuple.Create("", 250549), Tuple.Create
(
-#line 291 "WelcomePage.cshtml"
+ , 7489), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 7531), Tuple.Create("\"", 7580),
+ Tuple.Create(Tuple.Create("", 7539), Tuple.Create(
+#line 168 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 250549), false));
+ , 7539), false));
WriteLiteral(" width=\"274\" height=\"274\" />\r\n
\r\n

(
-#line 294 "WelcomePage.cshtml"
- Resources.WelcomePageImageText_Browser
+"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\"");
+ WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 16668), Tuple.Create("\"", 16735),
+ Tuple.Create(Tuple.Create("", 16696), Tuple.Create
(
+#line 171 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Browser
#line default
#line hidden
- , 253697), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 253737), Tuple.Create("\"", 253784),
- Tuple.Create(Tuple.Create("", 253745), Tuple.Create(
-#line 294 "WelcomePage.cshtml"
- Resources.WelcomePageImageText_Browser
+ , 16696), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 16736), Tuple.Create("\"", 16783),
+ Tuple.Create(Tuple.Create("", 16744), Tuple.Create(
+#line 171 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_Browser
#line default
#line hidden
- , 253745), false));
- WriteLiteral(" width=\"384\" height=\"305\" />:-|
\r\n \r\n
:-)
\r\n
\r\n
\r\n

(
-#line 298 "WelcomePage.cshtml"
+ WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 23205), Tuple.Create("\"", 23273),
+ Tuple.Create(Tuple.Create("", 23232), Tuple.Create
(
+#line 175 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 260233), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 260275), Tuple.Create("\"", 260324),
- Tuple.Create(Tuple.Create("", 260283), Tuple.Create(
-#line 298 "WelcomePage.cshtml"
+ , 23232), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 23274), Tuple.Create("\"", 23323),
+ Tuple.Create(Tuple.Create("", 23282), Tuple.Create(
+#line 175 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 260283), false));
+ , 23282), false));
WriteLiteral(" width=\"274\" height=\"274\" />\r\n
\r\n " +
"

(
-#line 301 "WelcomePage.cshtml"
- Resources.WelcomePageImageText_LightBulb
+"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" +
+"GgBhBYAoQUQWgChBUBoAYQWAKEFEFoAoQVAaAGEFkBoARBaAKEFEFoAhBZAaAEQWgChBRBaAIQWQGgBh" +
+"BYAoQUQWgCEFkBoAYQWAKEFEFoAoQVAaAGEFkBoARBaAKEFQGgBhBZAaAEQWgChBRBaAIQWQGgBEFoAo" +
+"QUQWgCEFkBoAYQWAKEFEFoAoQVAaAGEFgChBRBaAKEFQGgBhBZAaAEQWgChBUBoAYQWQGgBEFoAoQUQW" +
+"gCEFkBoAYQWAKEFEFoAhBZAaAGEFgChBRBaAKEFQGgBhBYAoQUQWgChBUBoAYQWQGgBEFoAoQUQWgCEF" +
+"kBoARBaAKEFEFoAhBZAaAGEFgChBRBaAIQWQGgBhBYAoQUQWgChBUBoAYQWQGgBEFoAoQVAaAGEFkBoA" +
+"RBaAKEFEFoAhBZAaAGE1hAACC2A0AIgtABCCyC0AAgtgNACCC0AQgsgtAAILYDQAggtAEILILQAQguA0" +
+"AIILYDQAiC0AEILgNACCC2A0AIgtABCCyC0AAgtgNACMCcvisIoACT0fwEGAL+BBlr+j4JHAAAAAElFT" +
+"kSuQmCC\"");
+ WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 31173), Tuple.Create("\"", 31242),
+ Tuple.Create(Tuple.Create("", 31201), Tuple.Create
(
+#line 178 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 269125), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 269167), Tuple.Create("\"", 269216),
- Tuple.Create(Tuple.Create("", 269175), Tuple.Create(
-#line 301 "WelcomePage.cshtml"
- Resources.WelcomePageImageText_LightBulb
+ , 31201), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 31243), Tuple.Create("\"", 31292),
+ Tuple.Create(Tuple.Create("", 31251), Tuple.Create(
+#line 178 "WelcomePage.cshtml"
+ Resources.WelcomePageImageText_LightBulb
#line default
#line hidden
- , 269175), false));
+ , 31251), false));
WriteLiteral(" width=\"346\" height=\"658\" />\r\n
\r\n " +
"

(
-#line 304 "WelcomePage.cshtml"
+ WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 46140), Tuple.Create("\"", 46206),
+ Tuple.Create(Tuple.Create("", 46167), Tuple.Create
(
+#line 181 "WelcomePage.cshtml"
Resources.WelcomePageImageText_Skyline
#line default
#line hidden
- , 284091), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 284131), Tuple.Create("\"", 284178),
- Tuple.Create(Tuple.Create("", 284139), Tuple.Create(
-#line 304 "WelcomePage.cshtml"
+ , 46167), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 46207), Tuple.Create("\"", 46254),
+ Tuple.Create(Tuple.Create("", 46215), Tuple.Create(
+#line 181 "WelcomePage.cshtml"
Resources.WelcomePageImageText_Skyline
#line default
#line hidden
- , 284139), false));
+ , 46215), false));
WriteLiteral(" width=\"1212\" height=\"202\" />\r\n
\r\n
\r\n\r\n
\r\n
");
Write(
-#line 309 "WelcomePage.cshtml"
+#line 186 "WelcomePage.cshtml"
Resources.WelcomeHeader
#line default
@@ -3679,7 +706,7 @@ using System
WriteLiteral("
\r\n
");
Write(
-#line 310 "WelcomePage.cshtml"
+#line 187 "WelcomePage.cshtml"
Resources.WelcomeStarted
#line default
@@ -3689,7 +716,7 @@ using System
WriteLiteral("
\r\n
");
Write(
-#line 311 "WelcomePage.cshtml"
+#line 188 "WelcomePage.cshtml"
Resources.WelcomeLearnMicrosoftAspNet
#line default
@@ -3727,22 +754,22 @@ using System
"Nc0+XYlr18RA5ZRt7/btjSnqsFwXE51mK68k3L/W+DqR8HRcAViFq5Xm1pGBP4wAyu751Crjs1z9ZM1w" +
"U1BLaYptsK4VktN9pRq0R9Y5/NMZL8slmC1ioSIu51ezNtkSACQ3HJckjXAX1v8nzsTxLwVBTT99OEiF" +
"xkMsNIVpu/J6yjhBpEG5mhv7vI8l+AAQB7WiwH/DuungAAAABJRU5ErkJggg==\"");
- WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 287010), Tuple.Create("\"", 287074),
- Tuple.Create(Tuple.Create("", 287033), Tuple.Create(
-#line 313 "WelcomePage.cshtml"
+ WriteAttribute("alt", Tuple.Create("\r\n alt=\"", 49086), Tuple.Create("\"", 49150),
+ Tuple.Create(Tuple.Create("", 49109), Tuple.Create(
+#line 190 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LearnMore
#line default
#line hidden
- , 287033), false));
- WriteAttribute("title", Tuple.Create(" title=\"", 287075), Tuple.Create("\"", 287124),
- Tuple.Create(Tuple.Create("", 287083), Tuple.Create(
-#line 313 "WelcomePage.cshtml"
+ , 49109), false));
+ WriteAttribute("title", Tuple.Create(" title=\"", 49151), Tuple.Create("\"", 49200),
+ Tuple.Create(Tuple.Create("", 49159), Tuple.Create(
+#line 190 "WelcomePage.cshtml"
Resources.WelcomePageImageText_LearnMore
#line default
#line hidden
- , 287083), false));
+ , 49159), false));
WriteLiteral(" width=\"58\" height=\"29\" />\r\n \r\n
\r\n\r\n\r\n