예제 #1
0
        public override void OnException(ExceptionContext context)
        {
            var minException = new MinException
            {
                User        = context.HttpContext?.User?.Identity?.Name,
                Method      = context.HttpContext?.Request?.Method,
                Path        = context.HttpContext?.Request?.Path.ToUriComponent(),
                QueryString = context.HttpContext?.Request.QueryString.ToUriComponent(),
                Body        = new StreamReader(context.HttpContext?.Request.Body).ReadToEnd(),
                Message     = context.Exception.Message,
                Exception   = context.Exception.ToString()
            };

            _logger.LogError(context.Exception, SerializeObject(minException));

            if (context.Exception is NotFoundException)
            {
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
            }
            else if (context.Exception is ForbiddenException)
            {
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
            }
            else
            {
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            context.HttpContext.Response.ContentType = "application/json";
            context.HttpContext.Response.WriteAsync(SerializeObject(new { success = false, error = minException }));
            context.ExceptionHandled = true;
        }
예제 #2
0
        static void Main(string[] args)
        {
            try
            {
                App();
            }
            catch (Exception ex)
            {
                // log

                MinException e =
                    new MinException("Kan ikke... fordi... ", ex);

                throw e;
            }
        }