zoukankan      html  css  js  c++  java
  • 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.BodyHttpResponse.Body的同步读写方法,需要设置AllowSynchronousIOtrue,才能在HttpReqeuest.BodyHttpResponse.Body上使用同步读写方法,否则就会抛出诸如本文所述的异常信息。

    [Announcement] AllowSynchronousIO disabled in all servers

    原文链接

  • 相关阅读:
    Linux 实战
    bash 环境配置及脚本
    Linux vi/vim
    Linux 正则表达式
    001 KNN分类 最邻近算法
    测序名解
    流式细胞术
    CircRNA 环化RNA
    笔记总结
    Flume
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/12879728.html
Copyright © 2011-2022 走看看