ASP.NETコアサーバーはAllowSynchronousIO
、false
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;
});
}