读书人

Session为空的有关问题

发布时间: 2012-06-06 16:44:11 作者: rapoo

Session为空的问题.求助
小弟最近学习框架的做法.重写了httpModule中的方法.并在Web.config中设置了

XML code
<httpHandlers>    <clear /></httpHandlers><httpModules>    <clear />    <add name="HttpModule" type="Xy.Web.HttpModule,Xy.Web" /></httpModules>

所以导致Session为null(注意,是Session为null 不是Session["xxx"]为null);
基本的猜想可能是因为重写了.net处理页面的方式.导致Session没有被正确的初始化..试过两个方法.一个是用
C# code
HttpApplication.Context.Session

另一个是用
C# code
HttpContext.Current.Session

都为null.请教如何才可以把这个Session初始化呢..
另外..能否有大侠告知下.net的Session实现原理....?

[解决办法]
C# code
public class SessionModule : IHttpModule     {        public void Init(HttpApplication context)        {            context.BeginRequest += BeginTransaction;            context.EndRequest += CommitAndCloseSession;            context.PreRequestHandlerExecute += PreRequestHandlerExecute;        }        public void Dispose() { }        public void PreRequestHandlerExecute(object sender, EventArgs e)        {            var context = ((HttpApplication)sender).Context;            context.Session["some_sesion"] = new SomeObject();        }...}
[解决办法]
如果在HttpModule中使用session,则必需在加载在

HttpModule.AcquireRequestState()
|
HttpModule.PreRequestHandlerExecute()

否则是读取不到Session.

参见
http://forums.asp.net/p/1098574/1665773.aspx

读书人网 >asp.net

热点推荐