Asp.net

我最早可以在 ASP.NET MVC 頁面生命週期中訪問 SESSION 是什麼時候?

  • October 3, 2013

我的問題與 StackOverflow 上的問題765054基本相同。我只是再次詢問它,因為接受的答案不正確(您無法訪問 Application_BeginRequest 中的會話對象)。

我們的案例是我們希望將經過身份驗證的使用者的使用者對象儲存在會話中。所以在後續的請求中,我們可以根據session中的user對象正確設置IPrincipal和IIdentity。

我使用基本控制器並覆蓋 OnActionExecuting 來做類似的事情。這是否是最早可以完成的,我不知道,但我知道它會在您的操作執行之前發生(因此在視圖渲染之前)。或者,您可能希望有一個自定義授權屬性來執行您想要的操作。這可能是確保它在其他屬性執行之前完成的唯一方法。

顯然AcquireRequestState是 HttpContext.Current.Session 不為空的最早事件。我只是按順序連接所有這些並進行了測試。我更喜歡使用在呼叫控制器上的建構子之前發生的 PreRequestHandlerExecute。

如果您希望將您的程式碼包含在 Global.asax 中或從 Global.asax 中引用,這是相關的。有關應用程序生命週期中事件的順序列表,請參閱此頁面:http: //msdn.microsoft.com/en-us/library/ms178473%28v=vs.100%29.aspx

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