public async Task Invoke(HttpContext context, IExceptionProvider logger) { try { await _next(context); } catch (Exception ex) { logger.Write(ex); context.Response.Clear(); context.Response.StatusCode = 500; context.Response.ContentType = "application/json; charset=utf-8"; var error = ex.InnerException != null ? new Error { Code = ex.InnerException.HResult, Message = ex.InnerException.Message } : new Error { Code = ex.HResult, Message = ex.Message }; error.ExceptionDetails = ex; var resjson = JsonConvert.SerializeObject(error); await context.Response.WriteAsync(resjson); } }
/// <summary> /// Configures an either processor with the necessary processors. /// </summary> /// <typeparam name="TError">Type of the error result to return as left</typeparam> /// <typeparam name="TResult">Type of the right result</typeparam> /// <typeparam name="TRestError">Type of the REST error</typeparam> /// <typeparam name="TException">Type of the exception</typeparam> /// <typeparam name="TSerializer">Type of the serializer</typeparam> /// <param name="eitherProcessor">Either processor to configure</param> /// <param name="exceptionProvider">Provider that creates an exception given an error</param> /// <param name="errorConverterProvider">Converts a REST error into a business error</param> /// <returns>Processor configured</returns> public static EitherProcessor <TError, TResult, TSerializer> Default <TError, TResult, TRestError, TException, TSerializer>( this EitherProcessor <TError, TResult, TSerializer> eitherProcessor, IExceptionProvider <TError, TException> exceptionProvider, IErrorConverterProvider <TError, TRestError> errorConverterProvider) where TSerializer : ISerializer where TException : Exception { var errorConverterProcessor = new ErrorConverterProcessor <TError, TRestError, TSerializer>(errorConverterProvider); var errorProcessor = new ErrorProcessor <OptionStrict <TRestError>, TSerializer>().Default(); eitherProcessor.AddLeftProcessors( errorConverterProcessor.AddProcessors( errorProcessor)); return(eitherProcessor); }
public CustomeExceptionMiddleware(RequestDelegate next, IExceptionProvider except) { _next = next; _logger = except; }
public ExceptionLogger(IExceptionProvider exceptionProvider, IHttpContextAccessor httpContextAccessor) { _exceptionProvider = exceptionProvider ?? throw new ArgumentNullException(nameof(exceptionProvider)); _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); }
/// <summary> /// CustomErrorPagesMiddleware /// </summary> /// <param name="next"></param> public CustomErrorPagesMiddleware(RequestDelegate next, IExceptionProvider logger) { _next = next; _logger = logger; }
public ExceptionProcessor(IExceptionProvider <TError, TException> exceptionProvider) { this.exceptionProvider = exceptionProvider; }