Exemple #1
0
        public async Task InvokeAsync(HttpContext context, IActivityMonitor monitor)
        {
            monitor.Warn("StupidMiddleware is here!");
            if (context.Request.Query.ContainsKey("sayHello"))
            {
                context.Response.StatusCode = StatusCodes.Status200OK;
                await context.Response.WriteAsync("Hello! " + _s.GetText());

                return;
            }
            if (context.Request.Query.ContainsKey("readHeader"))
            {
                string       name   = context.Request.Query["name"];
                StringValues header = context.Request.Headers[name];
                await context.Response.WriteAsync($"header '{name}': '{header}'");

                return;
            }
            if (context.Request.Query.ContainsKey("rewriteJSON"))
            {
                if (!HttpMethods.IsPost(context.Request.Method))
                {
                    context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
                }
                string content = await new StreamReader(context.Request.Body).ReadToEndAsync();
                await context.Response.WriteAsync($"JSON: '{JObject.Parse( content ).ToString( Newtonsoft.Json.Formatting.None )}'");

                return;
            }
            if (context.Request.Query.ContainsKey("rewriteXElement"))
            {
                if (!HttpMethods.IsPost(context.Request.Method))
                {
                    context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
                }
                string content = await new StreamReader(context.Request.Body).ReadToEndAsync();
                await context.Response.WriteAsync($"XElement: '{XElement.Parse( content ).ToString( SaveOptions.DisableFormatting )}'");

                return;
            }
            if (context.Request.Query.ContainsKey("bug"))
            {
                throw new Exception("Bug!");
            }
            if (context.Request.Query.ContainsKey("asyncBug"))
            {
                await BugAsync();

                return;
            }
            if (context.Request.Query.ContainsKey("hiddenAsyncBug"))
            {
                context.Response.StatusCode = StatusCodes.Status202Accepted;
                _ = Task.Delay(100).ContinueWith(t =>
                {
                    throw new Exception("I'm an horrible HiddenAsyncBug!");
                }, TaskScheduler.Default);
                await context.Response.WriteAsync("Will break the started Task.");

                return;
            }
            if (context.Request.Query.ContainsKey("unhandledAppDomainException"))
            {
                context.Response.StatusCode = StatusCodes.Status202Accepted;
                var t = new Thread(() => throw new Exception("I'm an unhandled exception."));
                t.IsBackground = true;
                t.Start();
                await context.Response.WriteAsync("Will break the started thread.");

                return;
            }
            await _next.Invoke(context);
        }
Exemple #2
0
 public Task Invoke(HttpContext context)
 {
     if (context.Request.Query.ContainsKey("sayHello"))
     {
         context.Response.StatusCode = StatusCodes.Status200OK;
         return(context.Response.WriteAsync("Hello! " + _s.GetText()));
     }
     if (context.Request.Query.ContainsKey("readHeader"))
     {
         string       name   = context.Request.Query["name"];
         StringValues header = context.Request.Headers[name];
         return(context.Response.WriteAsync($"header '{name}': '{header}'"));
     }
     if (context.Request.Query.ContainsKey("rewriteJSON"))
     {
         if (!HttpMethods.IsPost(context.Request.Method))
         {
             context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
         }
         string content = new StreamReader(context.Request.Body).ReadToEnd();
         return(context.Response.WriteAsync($"JSON: '{JObject.Parse( content ).ToString( Newtonsoft.Json.Formatting.None )}'"));
     }
     if (context.Request.Query.ContainsKey("rewriteXElement"))
     {
         if (!HttpMethods.IsPost(context.Request.Method))
         {
             context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
         }
         string content = new StreamReader(context.Request.Body).ReadToEnd();
         return(context.Response.WriteAsync($"XElement: '{XElement.Parse( content ).ToString( SaveOptions.DisableFormatting )}'"));
     }
     if (context.Request.Query.ContainsKey("bug"))
     {
         throw new Exception("Bug!");
     }
     if (context.Request.Query.ContainsKey("asyncBug"))
     {
         return(AsyncBug());
     }
     if (context.Request.Query.ContainsKey("hiddenAsyncBug"))
     {
         context.Response.StatusCode = StatusCodes.Status202Accepted;
         Task.Delay(100).ContinueWith(t =>
         {
             throw new Exception("I'm an horrible HiddenAsyncBug!");
         });
         return(context.Response.WriteAsync("Will break the started Task."));
     }
     if (context.Request.Query.ContainsKey("unhandledAppDomainException"))
     {
         context.Response.StatusCode = StatusCodes.Status202Accepted;
         var t = new Thread(() => throw new Exception("I'm an unhandled exception."));
         t.IsBackground = true;
         t.Start();
         return(context.Response.WriteAsync("Will break the started thread."));
     }
     if (context.Request.Query.ContainsKey("explicitCriticalError"))
     {
         context.Response.StatusCode = StatusCodes.Status202Accepted;
         ActivityMonitor.CriticalErrorCollector.Add(new Exception("I'm a Critical error."), "Test");
         return(context.Response.WriteAsync("Adds a Critical error to the CriticalErrorCollector."));
     }
     return(_next.Invoke(context));
 }