// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Net; using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Http; namespace StatusCodePagesSample { public class Startup { public void Configure(IApplicationBuilder app) { app.UseErrorPage(ErrorPageOptions.ShowAll); app.UseStatusCodePages(new StatusCodePagesOptions() // There is a default response but any of the following can be used to change the behavior. // .WithHandler(context => context.HttpContext.Response.SendAsync("Handler, status code: " + context.HttpContext.Response.StatusCode, "text/plain")) // .WithResponse("text/plain", "Response, status code: {0}") // .WithRedirect("~/errors/{0}") // PathBase relative // .WithRedirect("/base/errors/{0}") // Absolute // .WithTangent(builder => builder.UseWelcomePage()) // .WithReExecute("/errors/{0}") ); // "/[?statuscode=400]" app.Use((context, next) => { if (context.Request.Path.HasValue && !context.Request.Path.Equals(new PathString("/"))) { return next(); } // Check for ?statuscode=400 var requestedStatusCode = context.Request.Query["statuscode"]; if (!string.IsNullOrEmpty(requestedStatusCode)) { context.Response.StatusCode = int.Parse(requestedStatusCode); return Task.FromResult(0); } var builder = new StringBuilder(); builder.AppendLine("
"); builder.AppendLine("" + context.Request.PathBase + "/missingpage/