Closed 17371 closed 3 months ago
例如下游服务将返回
ServerA Program.cs:
app.UseMiddleware<MyCustomMiddleware>(); ... app.MapGet("/test", () => " 运行正常");
OcelotGateway Program.cs: app.UseMiddleware<MyCustomMiddleware>(); app.UseOcelot().Wait(); MyCustomMiddleware Stream originalResponseStream = response.Body; using MemoryStream replaceResponseStream = new MemoryStream(); response.Body = replaceResponseStream; await next(context); res_content_type = response.ContentType ?? ""; Console.WriteLine("响应类型:" + res_content_type); Console.WriteLine("响应长度:" + replaceResponseStream.Length); replaceResponseStream.Position = 0; await replaceResponseStream.CopyToAsync(originalResponseStream); response.Body = originalResponseStream; ServerA 响应类型:text/plain; charset=utf-8 响应长度:2 OcelotGateway 响应类型:text/plain; charset=utf-8 响应长度:121 replaceResponseStream从原来得2变成了121 !!!我不是很理解多出得部分是什么
OcelotGateway Program.cs:
app.UseMiddleware<MyCustomMiddleware>(); app.UseOcelot().Wait();
MyCustomMiddleware
Stream originalResponseStream = response.Body; using MemoryStream replaceResponseStream = new MemoryStream(); response.Body = replaceResponseStream; await next(context); res_content_type = response.ContentType ?? ""; Console.WriteLine("响应类型:" + res_content_type); Console.WriteLine("响应长度:" + replaceResponseStream.Length); replaceResponseStream.Position = 0; await replaceResponseStream.CopyToAsync(originalResponseStream); response.Body = originalResponseStream;
ServerA 响应类型:text/plain; charset=utf-8 响应长度:2
OcelotGateway 响应类型:text/plain; charset=utf-8 响应长度:121
我期望能将响应内容进行存储,但意外发现响应内容无法解析,他将显示乱码; 调试发现response.ContentType:application/json 没问题,当response.ContentType为text/plain时出现问题
下面是我的描述
例如下游服务将返回