public static async Task<RequestHandlingStatus> Invoke(HttpContext context) { using var scope = BootstrapperFactory.ContainerProvider.BeginLifetimeScope(); try { return await scope.StartMeasurements() .Trace(context, OnTrace) .SetupProviders(context) .ProcessRequest(context); } catch (Exception e) { try { context.Response.StatusCode = 500; ProcessOnException(e); } catch (Exception exception) { e = exception; } await context.Response.WriteAsync(ExceptionInfoPageGenerator.Generate(e, scope.Resolver.Resolve<ISimplifyWebSettings>().HideExceptionDetails)); return RequestHandlingStatus.RequestWasHandled; } }
/// <summary> /// Process an individual request. /// </summary> /// <param name="context"></param> /// <returns></returns> public override Task Invoke(IOwinContext context) { using (var scope = DIContainer.Current.BeginLifetimeScope()) { try { // Starts execution measurement scope.Container.Resolve <IStopwatchProvider>().StartMeasurement(); // Tracing var settings = scope.Container.Resolve <ISimplifyWebSettings>(); if (settings.ConsoleTracing) { TraceToConsole(context); } OnTrace?.Invoke(context); // Setup providers var webContextProvider = scope.Container.Resolve <IWebContextProvider>(); var languageManagerProvider = scope.Container.Resolve <ILanguageManagerProvider>(); var templateFactory = scope.Container.Resolve <ITemplateFactory>(); var fileReader = scope.Container.Resolve <IFileReader>(); var stringTable = scope.Container.Resolve <IStringTable>(); webContextProvider.Setup(context); languageManagerProvider.Setup(context); templateFactory.Setup(); fileReader.Setup(); stringTable.Setup(); // Run request process pipeline var requestHandler = scope.Container.Resolve <IRequestHandler>(); return(requestHandler.ProcessRequest(scope.Container, context)); } catch (Exception e) { try { context.Response.StatusCode = 500; ProcessOnException(e); } catch (Exception exception) { return (context.Response.WriteAsync(ExceptionInfoPageGenerator.Generate(exception, scope.Container.Resolve <ISimplifyWebSettings>().HideExceptionDetails))); } return (context.Response.WriteAsync(ExceptionInfoPageGenerator.Generate(e, scope.Container.Resolve <ISimplifyWebSettings>().HideExceptionDetails))); } } }
public void Generate_WithInnerException_HtmlPageText() { try { string text = null; // ReSharper disable PossibleNullReferenceException text.IndexOf("test", StringComparison.Ordinal); // ReSharper restore PossibleNullReferenceException } catch (Exception e) { try { throw new Exception("test 2", e); } catch (Exception ex) { Assert.IsTrue(ExceptionInfoPageGenerator.Generate(ex).Contains("html")); } } }
public void Generate_HideDetails_Null() { Assert.IsTrue(ExceptionInfoPageGenerator.Generate(new Exception("test"), true).Contains("html")); }
public void Generate_ExceptionNoFrames_Null() { Assert.IsNull(ExceptionInfoPageGenerator.Generate(new Exception("test"))); }
public void Generate_Null_Null() { Assert.IsNull(ExceptionInfoPageGenerator.Generate(null)); }