public class CustomResponseMiddleware : OcelotMiddleware
{
private readonly RequestDelegate _next;
public CustomResponseMiddleware(RequestDelegate next, IOcelotLoggerFactory loggerFactory)
: base(loggerFactory.CreateLogger<CustomResponseMiddleware>())
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
var response = httpContext.Items.DownstreamResponse();
const string streamingContent = "text/event-stream";
if (httpContext.Response.Headers["Content-Type"] == streamingContent
|| httpContext.Response.ContentType == streamingContent)
{
//await ForwardStream(httpContext.Response.Body, response);
var stream = await response.Content.ReadAsStreamAsync();
await WriteServerStreamEventsAsync(httpContext, stream);
}
await _next.Invoke(httpContext);
}
private static async Task WriteServerStreamEventsAsync(HttpContext httpContext, Stream contentStream)
{
var responseStream = httpContext.Response.Body;
await contentStream.CopyToAsync(responseStream, httpContext.RequestAborted);
await responseStream.FlushAsync(httpContext.RequestAborted);
}
Steps to Reproduce the Problem
自定义拓展代码如下
`
}
`