public ActionResult Setting() { try { List <MemberInfo> members = MemberInfoDAO.getAllMemberInfo(); ViewBag.MemberInfos = members; return(View("Setting")); } catch (System.Net.WebException ex) { //ViewBag.ErrMsg = "網路斷線或遠端伺服器錯誤,請通知管理者"; ErrorPageModel errModel = new ErrorPageModel { ErrorTitle = "Network Error", ErrorMsg = "網路斷線或遠端伺服器錯誤,請通知管理者" }; return(View("Error", errModel)); } catch (System.Exception ex) { return(View("Error")); } }
public IActionResult AddPost() { try { ViewBag.History = "/Home"; var claims = HttpContext.User.Claims; var authorName = claims.Where(c => c.Type == ClaimTypes.Name) .Select(c => c.Value) .SingleOrDefault(); var authorID = -1; Int32.TryParse(claims.Where(c => c.Type == "AuthorID") .Select(c => c.Value) .SingleOrDefault(), out authorID); var author = new Author(authorName, authorID); var post = new Post("", author, ""); var pmBuilder = new PostModelBuilder(post); return(View("AddPost", pmBuilder.build())); } catch (Exception e) { var errorMessage = new ErrorPageModel("Eror adding post.", "We couldn't add the post."); ViewBag.History = "/Home"; Console.WriteLine(e.ToString()); return(RedirectToAction("Index", "NullPost", errorMessage)); } }
public IActionResult AddPostResult(PostModel post) { try { var claims = HttpContext.User.Claims; post.AuthorName = claims.Where(c => c.Type == ClaimTypes.Name) .Select(c => c.Value) .SingleOrDefault(); var authorID = -1; Int32.TryParse(claims.Where(c => c.Type == "AuthorID") .Select(c => c.Value) .SingleOrDefault(), out authorID); post.AuthorID = authorID; var postBuilder = new PostBuilder(post); var postToAdd = postBuilder.build(); var postResult = _postDataAccess.AddPost(postToAdd); ViewBag.History = "/Home"; var pmBuilder = new PostModelBuilder(postResult); return(View("ViewSinglePost", pmBuilder.build())); } catch (ArgumentException e) { var errorMessage = new ErrorPageModel("Cannot add post.", "The post had empty properties."); Console.WriteLine(e.ToString()); return(ShowError(errorMessage)); } }
// [OutputCache(CacheProfile = CacheProfileName.Error)] public ActionResult Error(int statusCode, string status) { var error = Context.GetFeature <IErrorHandlerFeature>(); this.Response.StatusCode = statusCode; var model = new ErrorPageModel(); if (error != null) { model = new ErrorPageModel { ErrorDetails = GetErrorDetails(error.Error, false), Headers = Request.Headers, Query = Request.Query, }; } ActionResult result; if (this.Request.IsAjaxRequest()) { // This allows us to show errors even in partial views. result = this.PartialView(statusCode.ToString(), model); } else { result = this.View(statusCode.ToString(), model); } return(result); }
public async Task <IActionResult> ViewSinglePost(String postid) { var postResult = _postDataAccess.GetPostById(Guid.Parse(postid)); if (postResult == null) { ViewBag.History = "/Home"; var errorMessage = new ErrorPageModel("Post Does Not Exist", "This post does not exist."); return(ShowError(errorMessage)); } ViewBag.History = Request.Headers["Referer"].ToString(); var pmBuilder = new PostModelBuilder(postResult); var claims = HttpContext.User.Claims; var userAuthorId = -1; Int32.TryParse(claims.Where(c => c.Type == "AuthorID") .Select(c => c.Value) .SingleOrDefault(), out userAuthorId); var postAuthorId = postResult.Author.ID; var hasEditPowers = (await _authorization.AuthorizeAsync(User, "BlogEditor")).Succeeded; if (userAuthorId == postAuthorId || hasEditPowers) { return(View("ViewSinglePost", pmBuilder.build())); } return(View("ViewOnlySinglePost", pmBuilder.build())); }
public async Task <IActionResult> EditPostResult(PostModel post) { var userCanEdit = await HasEditPowers(); if (IsUserPostAuthor(post.AuthorID) || userCanEdit) { try { ViewBag.History = "/Home/ViewAll"; var postBuilder = new PostBuilder(post); var postToAdd = postBuilder.build(); var postResult = _postDataAccess.EditPost(postToAdd); var pmBuilder = new PostModelBuilder(postResult); return(View("ViewSinglePost", pmBuilder.build())); } catch (ArgumentException e) { ErrorPageModel errorMessage = new ErrorPageModel("Invalid Post.", "The post contained invalid input."); Console.WriteLine(e.ToString()); return(ShowError(errorMessage)); } } else { var errorMessage = new ErrorPageModel("Permission Denied", "You do not have permission to edit this post."); return(ShowError(errorMessage)); } }
// Assumes the response headers have not been sent. If they have, still attempt to write to the body. private async Task 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); await errorPage.ExecuteAsync(context); }
public async Task <IActionResult> DeletePostResult(PostModel post) { var userCanDelete = await HasDeletePowers(); if (IsUserPostAuthor(post.AuthorID) || userCanDelete) { try { var postBuilder = new PostBuilder(post); var postResult = _postDataAccess.DeletePost(postBuilder.build()); ViewBag.History = "/Home"; return(RedirectToAction("ViewAll")); } catch (ArgumentException e) { var errorMessage = new ErrorPageModel("Invalid Post.", "We couldn't find the post."); ViewBag.History = "/Home/ViewAll"; Console.WriteLine(e.ToString()); return(ShowError(errorMessage)); } } else { var errorMessage = new ErrorPageModel("Permission Denied.", "You do not have permission to do that."); return(ShowError(errorMessage)); } }
public IActionResult ShowError(ErrorPageModel message) { if (message == null) { message = new ErrorPageModel(); } ViewBag.History = "/Home/Index"; return(View("~/Views/Error/Index.cshtml", message)); }
public void OnGet_RequestPage() { // Arrange ErrorPageModel pageModel = new ErrorPageModel(); // Act var result = pageModel.Page(); // Assert Assert.IsType <PageResult>(result); }
public IActionResult NotAuthorize() { var model = new ErrorPageModel() { StatusCode = 403, Message = ExceptionMessages.UserAccessToThisPage }; return(View("Error", model)); }
// GET: ErrorPage public ActionResult Standard404() { var model = new ErrorPageModel() { Banner = MediaHelper.GetMediaUrl(CurrentPage, "bannerImage"), Header = CurrentPage.GetPropertyValue <string>("header"), Bodytext = CurrentPage.GetPropertyValue <IHtmlString>("bodytext") }; return(View(model)); }
public ActionResult DoQuery(DateTime STime, DateTime ETime) { try { DateTime sdate; DateTime edate; if (STime == null) { sdate = CommonType.MinDateTime; } else { sdate = STime; } if (ETime == null) { edate = CommonType.MaxDateTime; } else { edate = ETime; } List <WeatherInfo> weatherinfos = WeatherDataDAO.GetWeatherInfo(sdate, edate); if (weatherinfos != null && weatherinfos.Count > 0) { ViewBag.WeatherInfos = weatherinfos; return(View("Result")); } else { ViewBag.Message = "查無資料!"; } return(RedirectToAction("Index")); } catch (System.Net.WebException ex) { //ViewBag.ErrMsg = "網路斷線或遠端伺服器錯誤,請通知管理者"; ErrorPageModel errModel = new ErrorPageModel { ErrorTitle = "Network Error", ErrorMsg = "網路斷線或遠端伺服器錯誤,請通知管理者" }; return(View("Error", errModel)); } catch (System.Exception ex) { return(View("Error")); } }
private Task DisplayRuntimeException(HttpContext context, Exception ex) { var endpoint = context.GetEndpoint(); EndpointModel?endpointModel = null; if (endpoint != null) { endpointModel = new EndpointModel(); endpointModel.DisplayName = endpoint.DisplayName; if (endpoint is RouteEndpoint routeEndpoint) { endpointModel.RoutePattern = routeEndpoint.RoutePattern.RawText; endpointModel.Order = routeEndpoint.Order; var httpMethods = endpoint.Metadata.GetMetadata <IHttpMethodMetadata>()?.HttpMethods; if (httpMethods != null) { endpointModel.HttpMethods = string.Join(", ", httpMethods); } } } var request = context.Request; var title = Resources.ErrorPageHtml_Title; if (ex is BadHttpRequestException badHttpRequestException) { var badRequestReasonPhrase = WebUtilities.ReasonPhrases.GetReasonPhrase(badHttpRequestException.StatusCode); if (!string.IsNullOrEmpty(badRequestReasonPhrase)) { title = badRequestReasonPhrase; } } var model = new ErrorPageModel { Options = _options, ErrorDetails = _exceptionDetailsProvider.GetDetails(ex), Query = request.Query, Cookies = request.Cookies, Headers = request.Headers, RouteValues = request.RouteValues, Endpoint = endpointModel, Title = title, }; var errorPage = new ErrorPage(model); return(errorPage.ExecuteAsync(context)); }
public ActionResult DoQuery(QueryViewModel model) { try { if (model == null) { throw new ArgumentNullException("model"); } //GPSLocation gpsLocationInfo = GPSLocationService.GetClientGPSLocationInfo(); QueryWeatherRequest request = new QueryWeatherRequest(); //request.GPSLocationInfo = gpsLocationInfo; request.AreaCode = model.AreaCode; request.WCCode = model.WCCode; request.QueryDateTime = DateTime.Now; QueryWeatherResponse response = QueryServices.GetWeatherInfo(request); response.CurrentDay.QueryDate = request.QueryDateTime.ToString("yyyy/MM/dd"); response.CurrentDay.AreaCode = model.AreaCode; response.CurrentDay.AreaName = CityAndAreaConfig.Instance.getAreaNameByAreaCode(model.AreaCode); response.CurrentDay.WCCode = model.WCCode; response.CurrentDay.CountryName = CityAndAreaConfig.Instance.getWCCountryNameByWCCode(model.WCCode); ViewBag.CurrentDay = response.CurrentDay; if (response == null || response.CurrentDay == null) { ViewData["NoData"] = "true"; return(View("Index")); } else { ViewData["NoData"] = "false"; return(View("Result")); } } catch (System.Net.WebException ex) { //ViewBag.ErrMsg = "網路斷線或遠端伺服器錯誤,請通知管理者"; ErrorPageModel errModel = new ErrorPageModel { ErrorTitle = "Network Error", ErrorMsg = "網路斷線或遠端伺服器錯誤,請通知管理者" }; return(View("Error", errModel)); } catch (System.Exception ex) { return(View("Error")); } //return RedirectToAction("Result"); }
private RequestDelegate BuildErrorPageApplication(Exception exception) { if (exception is TargetInvocationException tae) { exception = tae.InnerException; } var showDetailedErrors = HostingEnvironment.IsDevelopment() || Options.WebHostOptions.DetailedErrors; var model = new ErrorPageModel { RuntimeDisplayName = RuntimeInformation.FrameworkDescription }; var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName).Version.ToString(); var clrVersion = assemblyVersion; model.RuntimeArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); var currentAssembly = typeof(ErrorPage).Assembly; model.CurrentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; model.ClrVersion = clrVersion; model.OperatingSystemDescription = RuntimeInformation.OSDescription; model.ShowRuntimeDetails = showDetailedErrors; if (showDetailedErrors) { var exceptionDetailProvider = new ExceptionDetailsProvider( HostingEnvironment.ContentRootFileProvider, Logger, sourceCodeLineCount: 6); model.ErrorDetails = exceptionDetailProvider.GetDetails(exception); } else { model.ErrorDetails = Array.Empty <ExceptionDetails>(); } var errorPage = new ErrorPage(model); return(context => { context.Response.StatusCode = 500; context.Response.Headers[HeaderNames.CacheControl] = "no-cache,no-store"; context.Response.Headers[HeaderNames.Pragma] = "no-cache"; context.Response.ContentType = "text/html; charset=utf-8"; return errorPage.ExecuteAsync(context); }); }
public IActionResult EditPost(String postid) { var postResult = _postDataAccess.GetPostById(Guid.Parse(postid)); if (postResult == null) { var errorMessage = new ErrorPageModel("Invalid Post.", "We couldn't find the post. :("); ViewBag.History = "/Home/ViewAll"; return(ShowError(errorMessage)); } ViewBag.History = "/Home/ViewSinglePost?postid=" + postid; var postModelBuilder = new PostModelBuilder(postResult); var postToEdit = postModelBuilder.build(); return(View("EditPost", postToEdit)); }
public IActionResult ViewAll() { ViewBag.History = "/Home"; List <PostModel> postResult = _postDataAccess.GetAllPosts().ConvertAll <PostModel>((p) => { var pmBuilder = new PostModelBuilder(p); return(pmBuilder.build()); }); if (postResult == null) { var errorMessage = new ErrorPageModel("No Posts", "There are no posts."); return(ShowError(errorMessage)); } return(View(postResult)); }
RequestDelegate BuildErrorPageApplication(Exception exception) { if (exception is TargetInvocationException tae) { exception = tae.InnerException; } var showDetailedErrors = HostingEnvironment.IsDevelopment() || Options.GameHostOptions.DetailedErrors; var model = new ErrorPageModel { RuntimeDisplayName = RuntimeInformation.FrameworkDescription }; var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).GetTypeInfo().Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName).Version.ToString(); var clrVersion = assemblyVersion; model.RuntimeArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); var currentAssembly = typeof(ErrorPage).GetTypeInfo().Assembly; model.CurrentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; model.ClrVersion = clrVersion; model.OperatingSystemDescription = RuntimeInformation.OSDescription; //if (showDetailedErrors) //{ // var exceptionDetailProvider = new ExceptionDetailsProvider( // HostingEnvironment.ContentRootFileProvider, // sourceCodeLineCount: 6); // model.ErrorDetails = exceptionDetailProvider.GetDetails(exception); //} //else // model.ErrorDetails = new ExceptionDetails[0]; var errorPage = new ErrorPage(model); return(context => { context.Response.StatusCode = 500; context.Response.Headers["Cache-Control"] = "no-cache"; return errorPage.ExecuteAsync(context); }); }
private Task DisplayRuntimeException(HttpContext context, Exception ex) { var request = context.Request; var model = new ErrorPageModel { Options = _options, ErrorDetails = _exceptionDetailsProvider.GetDetails(ex), Query = request.Query, Cookies = request.Cookies, Headers = request.Headers }; var errorPage = new ErrorPage(model); return(errorPage.ExecuteAsync(context)); }
// Assumes the response headers have not been sent. If they have, still attempt to write to the body. private void DisplayException(IOwinContext context, Exception ex) { var request = context.Request; var model = new ErrorPageModel { Options = this._options, }; if (this._options.ShowExceptionDetails) { model.ErrorDetails = this.GetErrorDetails(ex, this._options.ShowSourceCode).Reverse(); //model.ErrorDetails = new ErrorDetails[] { }; } if (this._options.ShowQuery) { model.Query = request.Query; } if (this._options.ShowCookies) { model.Cookies = request.Cookies; } if (this._options.ShowHeaders) { model.Headers = request.Headers; } if (this._options.ShowEnvironment) { model.Environment = request.Environment; } var errorPage = new ErrorPage { Model = model }; errorPage.Execute(context); }
public IActionResult Error() { var exceptionHandlerPathFeature = HttpContext.Features.Get <IExceptionHandlerPathFeature>(); var model = new ErrorPageModel() { StatusCode = 500, }; if (exceptionHandlerPathFeature?.Error is BaseException e) { model.Message = e.Message; } else { model.Message = ExceptionMessages.FatalError; } return(View(model)); }
private Task DisplayRuntimeException(HttpContext context, Exception ex) { var endpoint = context.Features.Get <IEndpointFeature>()?.Endpoint; EndpointModel endpointModel = null; if (endpoint != null) { endpointModel = new EndpointModel(); endpointModel.DisplayName = endpoint.DisplayName; if (endpoint is RouteEndpoint routeEndpoint) { endpointModel.RoutePattern = routeEndpoint.RoutePattern.RawText; endpointModel.Order = routeEndpoint.Order; var httpMethods = endpoint.Metadata.GetMetadata <IHttpMethodMetadata>()?.HttpMethods; if (httpMethods != null) { endpointModel.HttpMethods = string.Join(", ", httpMethods); } } } var request = context.Request; var model = new ErrorPageModel { Options = _options, ErrorDetails = _exceptionDetailsProvider.GetDetails(ex), Query = request.Query, Cookies = request.Cookies, Headers = request.Headers, RouteValues = request.RouteValues, Endpoint = endpointModel }; var errorPage = new ErrorPage(model); return(errorPage.ExecuteAsync(context)); }
public static ErrorPageModel CreateErrorPageModel( IFileProvider contentRootFileProvider, ILogger?logger, bool showDetailedErrors, Exception exception) { var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName !).Version?.ToString() ?? string.Empty; var clrVersion = assemblyVersion; var currentAssembly = typeof(ErrorPage).Assembly; var currentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() ! .InformationalVersion; IEnumerable <ExceptionDetails> errorDetails; if (showDetailedErrors) { var exceptionDetailProvider = new ExceptionDetailsProvider( contentRootFileProvider, logger, sourceCodeLineCount: 6); errorDetails = exceptionDetailProvider.GetDetails(exception); } else { errorDetails = Array.Empty <ExceptionDetails>(); } var model = new ErrorPageModel( errorDetails, showDetailedErrors, RuntimeInformation.FrameworkDescription, RuntimeInformation.ProcessArchitecture.ToString(), clrVersion, currentAssemblyVesion, RuntimeInformation.OSDescription); return(model); }
public IActionResult HandleError(int statusCode) { var model = new ErrorPageModel() { StatusCode = statusCode }; switch (statusCode) { case 404: { model.Message = ExceptionMessages.PageNotFound; break; } default: { model.Message = ExceptionMessages.FatalError; break; } } return(View("Error", model)); }
// Assumes the response headers have not been sent. If they have, still attempt to write to the body. private Task DisplayException(IOwinContext 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; } if (_options.ShowCookies) { model.Cookies = request.Cookies; } if (_options.ShowHeaders) { model.Headers = request.Headers; } if (_options.ShowEnvironment) { model.Environment = request.Environment; } var errorPage = new ErrorPage() { Model = model }; errorPage.Execute(context); return(TaskHelpers.Completed()); }
RequestDelegate BuildApplication() { try { _applicationServicesException?.Throw(); EnsureClient(); EnsureServer(); var builderFactory = Services.GetRequiredService <IApplicationBuilderFactory>(); var builder = builderFactory.CreateBuilder(Server?.Features); builder.ApplicationServices = Services; var startupFilters = Services.GetService <IEnumerable <IStartupFilter> >(); Action <IApplicationBuilder> configure = _startup.Configure; foreach (var filter in startupFilters.Reverse()) { configure = filter.Configure(configure); } configure(builder); return(builder.Build()); } catch (Exception ex) { if (!Options.SuppressStatusMessages) { // Write errors to standard out so they can be retrieved when not in development mode. Console.WriteLine("Application startup exception: " + ex.ToString()); } var logger = Services.GetRequiredService <ILogger <GameHost> >(); logger.ApplicationError(ex); if (!Options.CaptureStartupErrors) { throw; } EnsureClient(); EnsureServer(); // Generate an HTML error page. var hostingEnv = Services.GetRequiredService <IHostEnvironment>(); var showDetailedErrors = hostingEnv.IsDevelopment() || Options.DetailedErrors; var model = new ErrorPageModel { RuntimeDisplayName = RuntimeInformation.FrameworkDescription }; var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).GetTypeInfo().Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName).Version.ToString(); var clrVersion = assemblyVersion; model.RuntimeArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); var currentAssembly = typeof(ErrorPage).GetTypeInfo().Assembly; model.CurrentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; model.ClrVersion = clrVersion; model.OperatingSystemDescription = RuntimeInformation.OSDescription; //if (showDetailedErrors) //{ // var exceptionDetailProvider = new ExceptionDetailsProvider( // hostingEnv.ContentRootFileProvider, // sourceCodeLineCount: 6); // model.ErrorDetails = exceptionDetailProvider.GetDetails(ex); //} //else // model.ErrorDetails = new ExceptionDetails[0]; var errorPage = new ErrorPage(model); return(context => { context.Response.StatusCode = 500; context.Response.Headers["Cache-Control"] = "no-cache"; return errorPage.ExecuteAsync(context); }); } }
/// <summary> /// Startup hooks are pieces of code that will run before a users program main executes /// See: https://github.com/dotnet/core-setup/blob/master/Documentation/design-docs/host-startup-hook.md /// </summary> public static void Initialize() { if (!NativeMethods.IsAspNetCoreModuleLoaded()) { // This means someone set the startup hook for Microsoft.AspNetCore.Server.IIS // but are not running inprocess. Return at this point. return; } var detailedErrors = Environment.GetEnvironmentVariable("ASPNETCORE_DETAILEDERRORS"); var enableStartupErrorPage = detailedErrors?.Equals("1", StringComparison.OrdinalIgnoreCase) ?? false; enableStartupErrorPage |= detailedErrors?.Equals("true", StringComparison.OrdinalIgnoreCase) ?? false; var aspnetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); enableStartupErrorPage |= aspnetCoreEnvironment?.Equals("Development", StringComparison.OrdinalIgnoreCase) ?? false; var dotnetEnvironment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT"); enableStartupErrorPage |= dotnetEnvironment?.Equals("Development", StringComparison.OrdinalIgnoreCase) ?? false; if (!enableStartupErrorPage) { // Not running in development or detailed errors aren't enabled return; } AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) => { var exception = (Exception)eventArgs.ExceptionObject; // Get the content root from IIS. var iisConfigData = NativeMethods.HttpGetApplicationProperties(); var contentRoot = iisConfigData.pwzFullApplicationPath.TrimEnd(Path.DirectorySeparatorChar); var model = new ErrorPageModel { RuntimeDisplayName = RuntimeInformation.FrameworkDescription }; var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName).Version.ToString(); var clrVersion = assemblyVersion; model.RuntimeArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); var currentAssembly = typeof(ErrorPage).Assembly; model.CurrentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; model.ClrVersion = clrVersion; model.OperatingSystemDescription = RuntimeInformation.OSDescription; var exceptionDetailProvider = new ExceptionDetailsProvider( new PhysicalFileProvider(contentRoot), logger: null, sourceCodeLineCount: 6); // The startup hook is only present when detailed errors are allowed, so // we can turn on all the details. model.ErrorDetails = exceptionDetailProvider.GetDetails(exception); model.ShowRuntimeDetails = true; var errorPage = new ErrorPage(model); var stream = new MemoryStream(); // Never will go async because we are writing to a memory stream. errorPage.ExecuteAsync(stream).GetAwaiter().GetResult(); // Get the raw content and set the error page. stream.Position = 0; var content = stream.ToArray(); NativeMethods.HttpSetStartupErrorPageContent(content); }; }
private RequestDelegate BuildApplication() { try { EnsureApplicationServices(); EnsureServer(); var builderFactory = _applicationServices.GetRequiredService <IApplicationBuilderFactory>(); var builder = builderFactory.CreateBuilder(Server.Features); builder.ApplicationServices = _applicationServices; var startupFilters = _applicationServices.GetService <IEnumerable <IStartupFilter> >(); Action <IApplicationBuilder> configure = _startup.Configure; foreach (var filter in startupFilters.Reverse()) { configure = filter.Configure(configure); } configure(builder); return(builder.Build()); } catch (Exception ex) when(_options.CaptureStartupErrors) { // EnsureApplicationServices may have failed due to a missing or throwing Startup class. if (_applicationServices == null) { _applicationServices = _applicationServiceCollection.BuildServiceProvider(); } EnsureServer(); // Write errors to standard out so they can be retrieved when not in development mode. Console.Out.WriteLine("Application startup exception: " + ex.ToString()); var logger = _applicationServices.GetRequiredService <ILogger <WebHost> >(); logger.ApplicationError(ex); // Generate an HTML error page. var hostingEnv = _applicationServices.GetRequiredService <IHostingEnvironment>(); var showDetailedErrors = hostingEnv.IsDevelopment() || _options.DetailedErrors; var model = new ErrorPageModel(); var runtimeType = Microsoft.Extensions.Internal.RuntimeEnvironment.RuntimeType; model.RuntimeDisplayName = (runtimeType == "CoreCLR") ? ".NET Core" : runtimeType == "CLR" ? ".NET Framework" : "Mono"; #if NETSTANDARD1_3 || NETSTANDARD1_5 var systemRuntimeAssembly = typeof(System.ComponentModel.DefaultValueAttribute).GetTypeInfo().Assembly; var assemblyVersion = new AssemblyName(systemRuntimeAssembly.FullName).Version.ToString(); var clrVersion = assemblyVersion; #else var clrVersion = Environment.Version.ToString(); #endif model.RuntimeArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); var currentAssembly = typeof(ErrorPage).GetTypeInfo().Assembly; model.CurrentAssemblyVesion = currentAssembly .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; model.ClrVersion = clrVersion; model.OperatingSystemDescription = RuntimeInformation.OSDescription; if (showDetailedErrors) { var exceptionDetailProvider = new ExceptionDetailsProvider( hostingEnv.ContentRootFileProvider, sourceCodeLineCount: 6); model.ErrorDetails = exceptionDetailProvider.GetDetails(ex); } else { model.ErrorDetails = new ExceptionDetails[0]; } var errorPage = new ErrorPage(model); return(context => { context.Response.StatusCode = 500; context.Response.Headers["Cache-Control"] = "no-cache"; return errorPage.ExecuteAsync(context); }); } }