闽公网安备 35020302035485号
public class ResponseTextReplacementMiddleware(RequestDelegate next)
{
public async Task InvokeAsync(HttpContext context)
{
var whetherToReplace = WhetherToRelace(context);
if (!whetherToReplace)
{
await next(context);
return;
}
var originalResponseStream = context.Response.Body;
// 堆代码 duidaima.com
usingvar memoryStream = new MemoryStream();
context.Response.Body = memoryStream;
await next(context);
context.Response.Body = originalResponseStream;
memoryStream.Seek(0, SeekOrigin.Begin);
usingvar reader = new StreamReader(memoryStream);
var responseText = await reader.ReadToEndAsync(context.RequestAborted);
var replacedText = responseText.Replace("World", ".NET");
if (replacedText == responseText)
{
memoryStream.Seek(0, SeekOrigin.Begin);
await memoryStream.CopyToAsync(context.Response.Body, context.RequestAborted);
}
else
{
await context.Response.WriteAsync(replacedText, context.RequestAborted);
}
}
private static bool WhetherToRelace(HttpContext context)
{
// feature flag integration
returntrue;
}
}
使用效果: