我的.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
上找不到该方法。你有什么主意吗?
注意::我知道有一些答案,例如this one,它们说明了如何AllowSynchronousIO
。但是我对如何异步写入Jil
感兴趣。