ASP.NET Core: 同期操作は許可されていません。代わりに WriteAsync を呼び出すか、AllowSynchronousIO を true に設定してください。質問する

ASP.NET Core: 同期操作は許可されていません。代わりに WriteAsync を呼び出すか、AllowSynchronousIO を true に設定してください。質問する

ASP.NETコアサーバーはAllowSynchronousIOfalse

        new WebHostBuilder()
        .UseKestrel(options =>
        {
            options.AllowSynchronousIO = false;
        })

アクションではJsonResultを出力します

    public async Task<IActionResult> SanityCheck()
    {
        Dictionary<string, string> dic = await GetDic();

        return this.Json(dic);
    }

そしてそれは例外で終わる

System.InvalidOperationException: 同期操作は許可されていません。代わりに WriteAsync を呼び出すか、AllowSynchronousIO を true に設定してください。

で JsonResult を返すことはできませんかAllowSynchronousIO=false?

ベストアンサー1

次のような問題が発生する可能性があります。https://github.com/aspnet/AspNetCore/issues/8302

さらに詳しい情報はこちらをご覧ください:https://github.com/aspnet/AspNetCore/issues/7644

問題が解決するまでの回避策は、同期 IO を許可することです。Kestrel または IIS の Startup.cs に以下を追加します。

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;
    });
}

おすすめ記事