public static void Generate(IServiceScopeFactory serviceScopeFactory, GeneratorConfig config, string basePath, bool generateSearchDocuments, string searchIndex) { Console.WriteLine("Generate 404 Page"); var notFoundContent = ErrorPageBuilder.RenderPage(serviceScopeFactory, 404, config).Result; FileHelper.WriteToFile(FileHelper.GetActualFilePath(basePath, "output/html/404.html"), notFoundContent); }
private RequestDelegate BuildApplication() { Debug.Assert(_applicationServices != null, "Initialize must be called first."); try { _applicationServicesException?.Throw(); 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; if (startupFilters != null) { 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 = _applicationServices.GetRequiredService <ILogger <WebHost> >(); _logger.ApplicationError(ex); if (!_options.CaptureStartupErrors) { throw; } EnsureServer(); // Generate an HTML error page. var hostingEnv = _applicationServices.GetRequiredService <IHostEnvironment>(); var showDetailedErrors = hostingEnv.IsDevelopment() || _options.DetailedErrors; return(ErrorPageBuilder.BuildErrorPageApplication(hostingEnv.ContentRootFileProvider, logger, showDetailedErrors, ex)); } }
public ResponseDTO DefineResponseType(RequestDTO requestDto) { ResponseDTO responseDto = new ResponseDTO(); if (CheckRequestPath(requestDto.Path)) { responseDto = _fileResponseBuilder.CreateFileResponse(requestDto); } else if (requestDto.Path == "\\auth") { AuthenticationPageBuilder authenticationPage = new AuthenticationPageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.OK)); responseDto = authenticationPage.CreateStaticResponse(); } else if (requestDto.Path == "\\auth\\challenge") { bool isValidUser = _userController.IsValidUser(requestDto.BodyValues); if (!isValidUser) { ErrorPageBuilder errorPage = new ErrorPageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.UNAUTHORIZED)); responseDto = errorPage.CreateStaticResponse(); } else { AuthenticationResponsePageBuilder authenticationResponsePage = new AuthenticationResponsePageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.OK)); responseDto = authenticationResponsePage.CreateStaticResponse(); responseDto.UserName = requestDto.BodyValues.FirstOrDefault(x => x.Key == "user").Value; responseDto.CookieValue = Guid.NewGuid().ToString(); } } else { ErrorPageBuilder errorPage = new ErrorPageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.NOT_FOUND)); responseDto = errorPage.CreateStaticResponse(); } return(responseDto); }
public ResponseDTO CreateFileResponse(RequestDTO requestDto) { ResponseDTO responseDto = new ResponseDTO() { IsStreamResponse = true }; string physicalPath = _fileService.GetFilePath(requestDto.Path); if (_fileService.CheckIfExists(physicalPath)) { if (!requestDto.isAuthenticated) { ErrorPageBuilder errorPage = new ErrorPageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.UNAUTHORIZED)); responseDto = errorPage.CreateStaticResponse(); } else { responseDto.IsStreamResponse = true; responseDto.FileStream = _fileService.ReadFile(physicalPath); responseDto.ContentType = _fileService.GetFileMimeType(requestDto.Path); responseDto.ContentLength = Convert.ToInt32(responseDto.FileStream.Length); responseDto.Code = _statusCodeResponse.GetResponseCode(StatusCode.OK); } } else { ErrorPageBuilder errorPage = new ErrorPageBuilder( _statusCodeResponse.GetResponseCode(StatusCode.NOT_FOUND)); responseDto = errorPage.CreateStaticResponse(); } return(responseDto); }
public async Task StartAsync(CancellationToken cancellationToken) { HostingEventSource.Log.HostStart(); var serverAddressesFeature = Server.Features.Get <IServerAddressesFeature>(); var addresses = serverAddressesFeature?.Addresses; if (addresses != null && !addresses.IsReadOnly && addresses.Count == 0) { var urls = Configuration[WebHostDefaults.ServerUrlsKey]; if (!string.IsNullOrEmpty(urls)) { serverAddressesFeature !.PreferHostingUrls = WebHostUtilities.ParseBool(Configuration, WebHostDefaults.PreferHostingUrlsKey); foreach (var value in urls.Split(';', StringSplitOptions.RemoveEmptyEntries)) { addresses.Add(value); } } } RequestDelegate?application = null; try { var configure = Options.ConfigureApplication; if (configure == null) { throw new InvalidOperationException($"No application configured. Please specify an application via IWebHostBuilder.UseStartup, IWebHostBuilder.Configure, or specifying the startup assembly via {nameof(WebHostDefaults.StartupAssemblyKey)} in the web host configuration."); } var builder = ApplicationBuilderFactory.CreateBuilder(Server.Features); foreach (var filter in StartupFilters.Reverse()) { configure = filter.Configure(configure); } configure(builder); // Build the request pipeline application = builder.Build(); } catch (Exception ex) { Logger.ApplicationError(ex); if (!Options.WebHostOptions.CaptureStartupErrors) { throw; } var showDetailedErrors = HostingEnvironment.IsDevelopment() || Options.WebHostOptions.DetailedErrors; application = ErrorPageBuilder.BuildErrorPageApplication(HostingEnvironment.ContentRootFileProvider, Logger, showDetailedErrors, ex); } var httpApplication = new HostingApplication(application, Logger, DiagnosticListener, ActivitySource, Propagator, HttpContextFactory); await Server.StartAsync(httpApplication, cancellationToken); if (addresses != null) { foreach (var address in addresses) { Log.ListeningOnAddress(LifetimeLogger, address); } } if (Logger.IsEnabled(LogLevel.Debug)) { foreach (var assembly in Options.WebHostOptions.GetFinalHostingStartupAssemblies()) { Log.StartupAssemblyLoaded(Logger, assembly); } } if (Options.HostingStartupExceptions != null) { foreach (var exception in Options.HostingStartupExceptions.InnerExceptions) { Logger.HostingStartupAssemblyError(exception); } } }