public async Task InvokeAsync(HttpContext context, IActionResultExecutor <ObjectResult> writer, ILogger <RequestExceptionMiddleware> log) { if (context.Request.Query.TryGetValue("error", out var header) && int.TryParse(header, NumberStyles.Integer, CultureInfo.InvariantCulture, out var statusCode) && IsErrorStatusCode(statusCode)) { var(error, _) = ApiExceptionConverter.ToErrorDto(statusCode, context); await WriteErrorAsync(context, error, writer); return; } try { await next(context); } catch (Exception ex) { log.LogError(ex, "An unexpected exception has occurred."); if (!context.Response.HasStarted) { var localizer = context.RequestServices.GetRequiredService <IStringLocalizer <AppResources> >(); var(error, _) = ex.ToErrorDto(localizer, context); await WriteErrorAsync(context, error, writer); } } if (IsErrorStatusCode(context.Response.StatusCode) && !context.Response.HasStarted) { var(error, _) = ApiExceptionConverter.ToErrorDto(context.Response.StatusCode, context); await WriteErrorAsync(context, error, writer); } }
public async Task InvokeAsync(HttpContext context, RequestDelegate next) { if (context.Request.Query.TryGetValue("error", out var header) && int.TryParse(header, out var statusCode) && IsErrorStatusCode(statusCode)) { var(error, _) = ApiExceptionConverter.ToErrorDto(statusCode, context); await WriteErrorAsync(context, error); return; } try { await next(context); } catch (Exception ex) { log.LogError(ex, w => w.WriteProperty("message", "An unexpected exception has occurred.")); if (!context.Response.HasStarted) { var localizer = context.RequestServices.GetRequiredService <IStringLocalizer <AppResources> >(); var(error, _) = ex.ToErrorDto(localizer, context); await WriteErrorAsync(context, error); } } if (IsErrorStatusCode(context.Response.StatusCode) && !context.Response.HasStarted) { var(error, _) = ApiExceptionConverter.ToErrorDto(context.Response.StatusCode, context); await WriteErrorAsync(context, error); } }