public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
        {
            if (_contextProvider.GetContexts().Count > 0)
            {
                FragmentResponseFilterContext filterContext = new FragmentResponseFilterContext
                {
                    ResponseHtml = Encoding.Default.GetString(buffer.Take(count).ToArray()),
                    FlushIndex   = FlusIndex,
                    BodyStream   = BodyStream
                };

                _responseFilters?.ForEach(f => f.OnRendering(filterContext));

                byte[] responseBytes = Encoding.Default.GetBytes(filterContext.ResponseHtml);
                _logger.Info($"Chunk size : {responseBytes.Length}");
                await BodyStream.WriteAsync(responseBytes, offset, responseBytes.Length, cancellationToken);
                await FlushAsync(cancellationToken);

                _responseFilters?.ForEach(f => f.OnRendered(filterContext));
            }
            else
            {
                await BodyStream.WriteAsync(buffer, offset, count, cancellationToken);
            }
        }
コード例 #2
0
 public virtual void OnRendered(FragmentResponseFilterContext context)
 {
 }