Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ExceptionHandlerMiddleware
- {
- public async Task InvokeAsync(HttpContext httpContext, IBusService busService)
- {
- try
- {
- await _next(httpContext);
- }
- catch (Exception ex)
- {
- await HandleExceptionAsync(httpContext, ex, busService);
- }
- }
- private async Task HandleExceptionAsync(HttpContext context, Exception exception, IBusService busService)
- {
- context.Response.ContentType = "application/json";
- CustomProblemDetails problem;
- if (exception is ApiException ex)
- {
- problem = ProcessApiException(ex, context);
- }
- else if (exception is JsonSerializationException || exception is JsonReaderException)
- {
- problem = ProcessJsonException(exception, context);
- }
- else if (exception is TaskCanceledException taskCanceledException)
- {
- var cancelProblem = ProcessTaskCancelledException(context, taskCanceledException);
- if (cancelProblem is null)
- {
- return;
- }
- problem = cancelProblem;
- }
- else if (exception is OperationCanceledException operationCanceledException)
- {
- var cancelProblem = ProcessOperationCancelledException(context, operationCanceledException);
- if (cancelProblem is null)
- {
- return;
- }
- problem = cancelProblem;
- }
- else
- {
- problem = ProcessException(exception, context);
- }
- if (_sendSms)
- {
- var smsDto = new SmsMessageDto($"{problem.Details} [{exception.Message}]");
- await busService.PublishAsync<ISmsMessageRequested>(smsDto);
- }
- context.Response.StatusCode = problem.Status;
- await context.Response.WriteAsync(problem.ToJson());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement