public async Task WriteAsync(OutputFormatterWriteContext context)
        {
            ArgumentGuard.NotNull(context, nameof(context));

            HttpResponse response = context.HttpContext.Response;

            response.ContentType = _serializer.ContentType;

            await using TextWriter writer = context.WriterFactory(response.Body, Encoding.UTF8);
            string responseContent;

            try
            {
                responseContent = SerializeResponse(context.Object, (HttpStatusCode)response.StatusCode);
            }
#pragma warning disable AV1210 // Catch a specific exception instead of Exception, SystemException or ApplicationException
            catch (Exception exception)
#pragma warning restore AV1210 // Catch a specific exception instead of Exception, SystemException or ApplicationException
            {
                ErrorDocument errorDocument = _exceptionHandler.HandleException(exception);
                responseContent = _serializer.Serialize(errorDocument);

                response.StatusCode = (int)errorDocument.GetErrorStatusCode();
            }

            string url = context.HttpContext.Request.GetEncodedUrl();
            _traceWriter.LogMessage(() => $"Sending {response.StatusCode} response for request at '{url}' with body: <<{responseContent}>>");

            await writer.WriteAsync(responseContent);

            await writer.FlushAsync();
        }
        protected IActionResult Error(IEnumerable <Error> errors)
        {
            var document = new ErrorDocument(errors);

            return(new ObjectResult(document)
            {
                StatusCode = (int)document.GetErrorStatusCode()
            });
        }
Exemplo n.º 3
0
        // @formatter:wrap_array_initializer_style restore
        public void ErrorDocument_GetErrorStatusCode_IsCorrect(HttpStatusCode[] errorCodes, HttpStatusCode expected)
        {
            // Arrange
            var document = new ErrorDocument(errorCodes.Select(code => new Error(code)));

            // Act
            var status = document.GetErrorStatusCode();

            // Assert
            status.Should().Be(expected);
        }
        protected IActionResult Error(IEnumerable <Error> errors)
        {
            ArgumentGuard.NotNull(errors, nameof(errors));

            var document = new ErrorDocument(errors);

            return(new ObjectResult(document)
            {
                StatusCode = (int)document.GetErrorStatusCode()
            });
        }
        protected IActionResult Error(IEnumerable <Error> errors)
        {
            if (errors == null)
            {
                throw new ArgumentNullException(nameof(errors));
            }

            var document = new ErrorDocument(errors);

            return(new ObjectResult(document)
            {
                StatusCode = (int)document.GetErrorStatusCode()
            });
        }
Exemplo n.º 6
0
        /// <inheritdoc />
        public Task OnExceptionAsync(ExceptionContext context)
        {
            ArgumentGuard.NotNull(context, nameof(context));

            if (context.HttpContext.IsJsonApiRequest())
            {
                ErrorDocument errorDocument = _exceptionHandler.HandleException(context.Exception);

                context.Result = new ObjectResult(errorDocument)
                {
                    StatusCode = (int)errorDocument.GetErrorStatusCode()
                };
            }

            return(Task.CompletedTask);
        }