예제 #1
0
		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;
			}
		}
예제 #2
0
        /// <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));
 }