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() }); }
// @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() }); }
/// <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); }