ASP.NET Core : Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead(转载)
问:
ASP.NET core server, AllowSynchronousIO is set to false
new WebHostBuilder() .UseKestrel(options => { options.AllowSynchronousIO = false; })
In the action, it outputs a JsonResult
public async Task<IActionResult> SanityCheck() { Dictionary<string, string> dic = await GetDic(); return this.Json(dic); }
And it ends with an exception
System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.
Can't I return a JsonResult with AllowSynchronousIO=false ?
答:
You might have the following problem: https://github.com/aspnet/AspNetCore/issues/8302
And you can find more info here: https://github.com/aspnet/AspNetCore/issues/7644
A workaround until the issue is being solved is to allow Synchronous IO. Put this in Startup.cs for either Kestrel or IIS:
public void ConfigureServices(IServiceCollection services) { // If using Kestrel: services.Configure<KestrelServerOptions>(options => { options.AllowSynchronousIO = true; }); // If using IIS: services.Configure<IISServerOptions>(options => { options.AllowSynchronousIO = true; }); }
从下面的链接可以知道,微软从ASP.NET Core 3.0开始,在默认情况下,禁用了HttpReqeuest.Body和HttpResponse.Body的同步读写方法,需要设置AllowSynchronousIO为true,才能在HttpReqeuest.Body和HttpResponse.Body上使用同步读写方法,否则就会抛出诸如本文所述的异常信息。
[Announcement] AllowSynchronousIO disabled in all servers
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架