【发布时间】:2021-07-05 14:34:16
【问题描述】:
我正在尝试将字符串 )]}',\n 添加到任何 JSON 响应正文中。我认为IAsyncResultFilter 将是我需要使用的,但我没有运气。如果我使用下面的代码,它会将文本追加到响应中,因为调用await next() 会写入响应管道。但是,如果我在此之前尝试查看上下文,我无法判断响应实际上是什么来知道它是否是 JSON。
public class JsonPrefixFilter : IAsyncResultFilter
{
public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
var executed = await next();
var response = executed.HttpContext.Response;
if (response.ContentType == null || !response.ContentType.StartsWith("application/json"))
return;
var prefix = Encoding.UTF8.GetBytes(")]}',\\n");
var bytes = new ReadOnlyMemory<byte>(prefix);
await response.BodyWriter.WriteAsync(bytes);
}
}
【问题讨论】: