Session和HttpContext.Current.Session對象有什麼區別?Session和HttpContext.Current.Session之間的區別
回答
沒有區別。
Page.Session的getter返回上下文會話。
沒有。 Session
只是指向HttpContext.Current.Session
。
這裏有點晚,但這裏是我剛發現的東西。
@Phillipe Leybaert和@CSharpAtl都不正確。 HttpApplication
的Session
屬性展示不同於屬性HttpContext.Current.Session
的行爲。如果有一個可用,他們都會返回對同一個HttpSessionState
實例的引用。噹噹前請求沒有可用的HttpSessionState
實例時,它們的做法會有所不同。
並非所有HttpHandler
都提供會話狀態。爲此,HttpHandler
必須實施[一個或兩個?]標記接口IRequiresSessionState
或IReadOnlySessionState
。如果沒有會話可用,則返回null
。
的HttpApplication
的實施Session
屬性與消息Session state is not available in this context.
引發HttpException
而不是返回一個null
參考。
HttpHandler
沒有實現會話的一些示例是通常靜態資源(如圖像和CSS文件)的默認處理程序。在這種情況下(如在global.asax
事件處理程序中)對HttpApplication
的Session
屬性的任何引用都將導致引發HttpException
。
不用說,意想不到的HttpException
提供了一個WTF ?!如果你不期待它。
的HttpApplication
類的Session
性能,從而實現(從反射鏡):
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public HttpSessionState Session
{
get
{
HttpSessionState session = null;
if (this._session != null)
{
session = this._session;
}
else if (this._context != null)
{
session = this._context.Session;
}
if (session == null)
{
throw new HttpException(SR.GetString("Session_not_available"));
}
return session;
}
}
感謝您付出努力填寫更好的答案。 – nicodemus13 2011-05-26 10:19:59
- 1. (Hibernate)Session.close()和releaseSession(Session)之間的區別
- 2. ControllerContext.HttpContext.Session和HttpContext.Current.Session之間的區別是什麼
- 3. Laravel 4中的Input :: flash()和Session :: flash()之間的區別4
- 4. TensorFlow C++ API中ClientSession和Session之間的區別
- 5. Hibernate Session和EntityManager的區別
- 6. Session.Add(「key」,value)和Session [「key」] = value之間有什麼區別?
- 7. 之間的〜/和的區別../
- 8. '#','%'和'$'之間的區別
- 9. {!!之間的區別!!}和{{}}
- 10. '+ ='和'= +'之間的區別?
- 11. 「。+」和「。+?」之間的區別
- 12. .eq之間的區別。和==
- 13. #。/和#之間的區別。 ./
- 14. !=和!之間的區別==
- 15. 「%〜dp0」和「。\」之間的區別?
- 16. | =和^ = css之間的區別
- 17. 之間的區別。和#
- 18. ==和case之間的區別?
- 19. 「**/* /」和「** /」之間的區別?
- 20. jQuery - '。'之間的區別和「#」
- 21. 「?1」和「?」之間的區別
- 22. `%in%`和`==`之間的區別
- 23. fmod和%之間的區別
- 24. 之間的區別:+和:+
- 25. web.xml中session-timeout與max-age之間的區別是什麼?
- 26. 類區域和堆之間的區別
- 27. SPFile和PublishingPage類別之間的區別
- 28. 子類和類別之間的區別?
- 29. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 30. 的Servlet的java:cookie和session的區別
這是值得澄清的是,當你說「會話」,你是指System.Web.UI.Page.Session 。 Session對象在ASP.NET頁面的上下文中可用。 – Llyle 2010-10-11 23:45:06