2017-09-29 66 views
3

如果我設置爲HttpContext.Items["Username"] = "adam";HttpContext.Items["Username"]對每個請求都是唯一的,或者它們可以在請求之間重疊?在asp.net核心中的請求之間是否共享HttpContext.Items?

+1

不,他們不應該。 HttpContext.Items Items集合是存儲僅處理一個特定請求時所需的數據的好位置。該集合的內容在每次請求後被丟棄。 Items集合最適合用作組件或中間件在請求期間的不同時間點進行通信並且沒有直接參數傳遞方式時進行通信的方式。有關更多信息,請參閱本文後面的使用HttpContext.Items。 (從ASP.NET核心站點) –

+0

我不知道爲什麼,但我看到他們堅持跨請求,所以我放棄了使用項目詞典。 –

回答

2

在asp.net核心中的請求之間是否共享HttpContext.Items?

答案很簡單:沒有

引述documentation

與HttpContext.Items

HttpContext抽象爲IDictionary<object, object>類型的字典集合 支持工作,稱爲Items。該集合從 和HttpRequest開始可用,並且在每個請求結束時被丟棄。您可以通過 通過爲鍵控條目分配值或通過請求特定鍵的 值來訪問它。

參考Introduction to session and application state in ASP.NET Core

所以物品在每個請求結束丟棄,並且僅相關的當前請求。

+0

感謝您的回答。如果我在類中有一個類型爲「IHttpContextAccessor」的靜態屬性,然後嘗試使用該靜態屬性訪問「IHttpContextAccessor.HttpContext.Items」,它是否會在每個請求中提供正確的值? – user3219798

+1

@ user3219798提供的上下文將是當前請求的上下文。 'IHttpContextAccessor'通常被註冊爲單例(靜態) – Nkosi

相關問題