在Page类的构造函数里, 为什么HttpContext.Current.Session是null?

(兼回答CSDN论坛的一个问题)

因为Session是在HttpApplication的AcquireRequestState事件后才有的,而Page类(或其他HttpHandler)的对象是在此之前生成的,看一下HttpApplication的事件次序

BeginRequest
AuthenticateRequest
AuthorizeRequest
ResolveRequestCache
—-Page类(或其他HttpHandler)的对象在此生成
AcquireRequestState
PreRequestHandlerExecute
—-Page类(或其他HttpHandler)的对象的ProcessRequest
PostRequestHandlerExecute
ReleaseRequestState
UpdateRequestCache
EndRequest

如果你想深入了解ASP.NET处理请求过程,参考Rick Strahl的文章

A low-level Look at the ASP.NET Architecture

打赏作者