如果我在隔離行程模式下創建 Azure 函式,則 HttpRequestData.Cookies 為空。如果我在非隔離模式下創建完全相同的函式,它就有 cookie。
為了說明我的觀點。我創建了 2 個函式。兩者都在同一個埠上運行(它們獨立運行)。
隔離程序功能

非隔離程序功能

(函式是使用默認的 VS 2021 模板創建的,所做的唯一更改是函式名稱)
從 blazor 中可以簡單地呼叫函式。

在 chrome 中,我可以看到正在傳遞的 cookie:

(我開始嘗試注入 ClaimsPrincipal ,如:https ://www.youtube.com/watch?v=eZQq3zw3WL4 中所述。在獨立 Azure 函式中,此值為空,并且再次不在非獨立 Azure 函式中.我假設這是因為未提取身份驗證cookie)
編輯:接受的答案有助于解決空索賠問題。然而,即使存在宣告,我們也不會注入 ClaimsPrincipal。我發現這篇文章描述了一種解決方法:https ://adamstorr.azurewebsites.net/blog/using-azure-functions-middleware-to-access-claimsprincipal-in-azure-static-web-apps
uj5u.com熱心網友回復:
.Net 5 隔離 Http 觸發 Azure 函式:

非隔離函式:.Net 3.1 Http 觸發 Azure 函式

當我觀察到行程內(非隔離)和行程外(隔離環境)之間的行為差??異時,即在函式宣告中使用非隔離中的HttpRequest / ObjectResult和隔離中的HttpRequestData / HttpResponseData。
正如HttpRequestDataMicrosoft 類檔案中給出的那樣,它獲取請求類的 cookie。其中HttpRequest或ObjectResult類是 ASP .Net Core 功能,用于存盤正文、標題、cookie、內容型別、內容長度等欄位。
Azure Functions 的主要用例是無狀態的。您可能可以通過使用自己來模擬它Request.Cookies,Response.Cookies但是 ASP .NET 功能并不直接適用于 Functions。
在 azure-functions-dotnet-worker 的 12 月GitHub 問題頁面中,它被標記為 Azure Functions v3 中的一個錯誤,即 HttpRequestData.Cookies 為空,但是當我們從請求物件中指定 Cookies 類或當我們更新Microsoft.Azure.Functions.Worker到1.6.0版本時,它可以解決。

Reference: https://docs.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide#differences-with-net-class-library-functions
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/423031.html
標籤:
