From 9233b45966ac1f6b97533902b51b5a1f7145f59e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 23 Dec 2021 17:15:05 +0500 Subject: [PATCH] Handle ArgumentException in SimplifyExceptionsMiddleware. It replaces StatusCode 500 (server error) to StatusCode 400 (bad request) --- .../Middlewares/SimplifyExceptionsMiddleware.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs b/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs index deae400d..667f1946 100644 --- a/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs +++ b/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Http; using System; +using System.IO; using System.Threading.Tasks; namespace AsbCloudWebApi.Middlewares @@ -19,6 +20,15 @@ namespace AsbCloudWebApi.Middlewares { await next?.Invoke(context); } + catch(ArgumentException ex) + { + Console.WriteLine($"ArgumentException in {context.Request.Method}: {ex.Message}"); + context.Response.Clear(); + context.Response.StatusCode = 400; + context.Response.ContentType = "application/json"; + var body = MakeJsonBody(ex); + await context.Response.WriteAsync(body); + } catch (TaskCanceledException ex) { Console.WriteLine(ex.Message); @@ -31,5 +41,12 @@ namespace AsbCloudWebApi.Middlewares throw; } } + + private string MakeJsonBody(ArgumentException ex) + { + object error = new { name = ex.ParamName, errors = new string[] { ex.Message } }; + var buffer = System.Text.Json.JsonSerializer.Serialize(error); + return buffer; + } } }