/// <inheritdoc /> public Task SerializeToResponse(RequestExecutionContext context) { if (context.Result is IActionResult actionResult) { return(_actionResultExecutor.Execute(context, actionResult)); } if (context.Result != null && context.ContentSerializer != null) { return(context.ContentSerializer.SerializeToResponse(context)); } if (context.Result == null) { return(NullResult(context)); } if (_serializer != null && _serializer.IsDefault) { return(_serializer.SerializeToResponse(context)); } return(NegotiateSerialization(context)); }
/// <summary> /// Negotiate serialization /// </summary> /// <param name="context"></param> /// <returns></returns> protected virtual Task NegotiateSerialization(RequestExecutionContext context) { context.HttpContext.Request.Headers.TryGetValue("Accept", out var accepts); foreach (var serializer in _contentSerializers) { if (serializer.CanSerialize(context, accepts)) { return(serializer.SerializeToResponse(context)); } } if (_defaultSerializer != null) { return(_defaultSerializer.SerializeToResponse(context)); } return(_errorHandler.HandleSerializerUnknownContentType(context)); }