Dot-Net-Core

在 Azure Function 中啟用同步 IO

  • November 15, 2021

我正在建構一個 HTTPTriggered Azure 函式,目標是 netcoreapp3.0,它正在執行一個 GraphQL .NET 伺服器。GraphQL .NET 要求將AllowSynchronousIO其設置為true,但我不知道如何為 Azure 函式執行此操作。我嘗試實現自己的Startup類,該類擴展FunctionsStartup並在方法中添加了以下程式碼,但Configure沒有成功。

builder.Services
   .AddOptions<KestrelServerOptions>()
   .Configure<IConfiguration>((settings, configuration) =>
   {
       settings.AllowSynchronousIO = true;
       configuration.Bind(settings);
   });

我得到的錯誤資訊是:

發生了未處理的主機錯誤。

Microsoft.AspNetCore.Server.Kestrel.Core:不允許同步操作。改為呼叫 WriteAsync 或將 AllowSynchronousIO 設置為 true。

任何幫助將不勝感激!

將環境變數設置FUNCTIONS_V2_COMPATIBILITY_MODEtrue似乎可以解決問題,請參閱https://github.com/Azure/azure-functions-host/pull/5286

為什麼錯誤:

未啟用同步 IO

怎麼修:

編輯項目根文件夾中的“ local.settings.json ”文件,使其看起來像這樣。“FUNCTIONS_V2_COMPATIBILITY_MODE”:“真”

  {
     "IsEncrypted": false,
     "Values": {
       "FUNCTIONS_WORKER_RUNTIME": "dotnet",
       //Enable Synchronous IO
       "FUNCTIONS_V2_COMPATIBILITY_MODE": "true"
     },
     "Host": {
       "LocalHttpPort": 7071,
       "CORS": "*",
       "CORSCredentials": false
     }
   }

引用自:https://stackoverflow.com/questions/59379971