首页 新闻 会员 周边

MVC4的 HttpModel 中获取不到session?

0
悬赏园豆:30 [已解决问题] 解决于 2015-12-30 09:31
public void Init(HttpApplication context)
        {
            if (context.Context.Response.Cookies.Count>0)
            {
                string aaa = "asd";
            }
            // 下面是如何处理 LogRequest 事件并为其 
            // 提供自定义日志记录实现的示例
            //context.LogRequest += new ventHandler(OnLogRequest);

            context.BeginRequest += new ventHandler(this.BeginRequest);
            context.EndRequest += new EventHandler(this.EndRequest);
        }

private void BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            var cc = application.Context.Response.Cookies.Count;
            //cc=0
        }


        private void EndRequest(object sender, EventArgs args)
        {
            HttpApplication application = sender as HttpApplication;
            var cc = application.Context.Response.Cookies.Count;
            //cc=0
        }

无论如何,session总是为null  cookie数量总是0。   登录正常,session在controller中也看得到。

调试流程是这样的,Login form提交后 (此时保存了session,然后调试至HttpModel类(得不到session,并且session是会生成cookie的,也看不到),Controller中看得到有session

coder_wang的主页 coder_wang | 初学一级 | 园豆:193
提问于:2014-09-16 12:03
< >
分享
最佳答案
0

在HttpModule的执行过程中,系统是不会生成Session对象的。

Session对象是每次请求时系统动态生成的(虽然是通过HttpContext可以获取),但在HttpModule的接口层次里,还不具备这个对象。

如果你使用HttpHandler,这个时候就可以使用Session了,不过,如果是自己写的实现IHttpHandler类,要实现接口IRequireSessionState接口。

至于Cookie,你可以通过Request来获得。

收获园豆:10
519740105 | 大侠五级 |园豆:5810 | 2014-09-16 13:49
其他回答(2)
0

管道问题.要在会话初始化的事件之后的事件里,才能得到会话数据

收获园豆:10
吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-16 12:13

请问能详细解答一下可否?  不太懂,google了也没找到

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2014-09-16 12:22

@coder_wang: asp.net管道,你看下一个请求在asp.net里是怎么处理的.

endrequest里是可以拿到session的,beginrequest拿不到

cookie这几个事件都能拿到.因为cookie在很早的时候就解析了.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-16 12:43

@吴瑞祥: 我试了 endrequest 拿不到session和cookie  不知道问题出在哪

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2014-09-16 13:13
0

这个涉及到管道的执行过程,不是每个过程都能拿到cookie的。

还有你的参数能那样转换么?

收获园豆:10
幻天芒 | 园豆:37175 (高人七级) | 2014-09-16 12:29

请问能详细解答一下吗? 我的参数这样转换有错误吗

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2014-09-16 12:33

@coder_wang: 参数那个没什么问题,我想多了。还有,你是拿请求参数,应该去用Request这个对象,而不是Response哈。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-09-16 13:29

@幻天芒: 我是要拿到cookies,设置cookies's domain,所以在Response中拿Cookies

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2014-09-16 13:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册