[英]How does HttpContext.Current work?
這是一個難以制定的問題。 我想知道HttpContext.Current如何為每個請求分配一個唯一的實例,因為它是一個靜態對象?
謝謝!
Current不是靜態變量,它的靜態屬性和get屬性只是一個返回當前Context的靜態方法。
ASP.NET使用當前線程存儲一些信息,您總是可以獲得本地線程存儲來存儲僅在當前線程中是靜態的信息,並且只能通過當前線程中的任何方法訪問。
因此,ASP.NET將一些本地信息存儲在http上下文執行所請求的應用程序的線程中,並且從任何地方調用Current將獲取本地線程數據並獲取所需信息。
您還可以查看[ThreadStatic]
屬性,它幾乎以類似的方式執行操作。
更新
從ASP.NET 4.5及之后,Current HttpContext
通過CallContext
而不是[ThreadStatic]
傳遞,因此在單個邏輯上下文而不是當前線程中通過異步調用保持上下文可用,因為每個異步調用可能最終在不同的線程上。
你應該閱讀這篇博文:
http://odetocode.com/Articles/112.aspx
您應該對以下內容開頭的部分感興趣。 這很長,否則我會引用更多:
我們之間的好奇心會想知道HttpContext.Current如何找到當前請求的上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.