我的.NET Core 3.1
项目中有这个格式化程序(我最近从 升级2.1
):
public class JilOutputFormatter : TextOutputFormatter {
public JilOutputFormatter() =>
JilFormatterConfig.AddSupportedHeaders(SupportedMediaTypes, SupportedEncodings);
public override Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding) {
using (var writer = new StreamWriter(context.HttpContext.Response.Body)) {
JSON.Serialize(context.Object, writer, MyOptions);
writer.Flush();
}
return Task.FromResult(true);
}
}
我用这个片段将它添加到管道中:
services.AddMvcCore(o => {
o.OutputFormatters.Insert(0, new JilOutputFormatter());
}).AddOthersBlahBlah();
当应用程序打开时,它就像一个魅力2.1
。但是现在3.1
我收到了这个错误:
处理请求时发生未处理的异常。InvalidOperationException:不允许同步操作。改为调用 WriteAsync 或将 AllowSynchronousIO 设置为 true。
我尝试异步写入操作,但在Jil
. 请问你有什么想法吗?
注意:我知道有一些答案(例如这个答案)是在说如何AllowSynchronousIO
. 但我对如何异步写入感兴趣Jil
。