コード例 #1
0
        public async void ProcessServerError(HttpContext context, Exception exception, int statusCode = 500)
        {
            _errorBuilder.Clean();
            _errorBuilder.WithMessage(statusCode, exception.Message, context.Request.Path, exception.Source);
            var errorNode = _errorBuilder.Build();

            context.Response.Clear();
            context.Response.StatusCode = statusCode;

            var headerAccept = context.Request.Headers["Accept"].ToString().ToLower();

            if (headerAccept == "application/xml")
            {
                context.Response.ContentType = "application/problem+xml";
                var xmlResult = SerializeXMLResponse(errorNode);
                await context.Response.WriteAsync(xmlResult, System.Text.Encoding.UTF8);
            }
            else
            {
                context.Response.ContentType = "application/problem+json";
                var jsonResult = JsonConvert.SerializeObject(errorNode);
                await context.Response.WriteAsync(jsonResult, System.Text.Encoding.UTF8);
            }
        }