コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 public CustomeExceptionMiddleware(RequestDelegate next, IExceptionProvider except)
 {
     _next   = next;
     _logger = except;
 }
コード例 #4
0
 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;
 }
コード例 #6
0
 public ExceptionProcessor(IExceptionProvider <TError, TException> exceptionProvider)
 {
     this.exceptionProvider = exceptionProvider;
 }