具体实现是这样的:
首先,我在Logon.aspx后台将要保存的会话值保存到Session:
之后,在一个用户控件页面,比如UserControl.ascx后台取出Session的值:
并根据取出的值判断绑定不同的数据到前台显示。
最后我在Default.aspx页面通过Ajax获取UserControl.ascx的页面内容,并加载到Default.aspx页面中(Ajax获取控件内容方法参考的是老赵的(使用User Control 生成HTML)。但是测试时出现如上错误,请求大家帮个忙,谢谢!
谢谢大家的帮忙了,问题还么有解决,我把源代码做成一个测试项目了,有兴趣、能帮忙的下载来研究下,谢谢~~(下载源文件)
在你的用户控件页面中@page中设置一下看看。
也按要求设置了,同样的不能解决问题
@bbyz309: 那就是ajax请求的时候不能访问到session?
@chenping2008: 如果不能访问到Session的话,提示的错误应该不是这样的吧?我试过了,不用Ajax请求,而直接把控件加载到Default.aspx页面是没有这个问题的。但是我整个项目都是采用Ajax这个来架构,要改动的话,改动量太大了。
@bbyz309: 我也试过了
public void ProcessRequest(HttpContext context)
这个里面的context 的session是null
这个我是ajax的请求这个handler的
@chenping2008:
这个可以帮助你:
http://blog.sina.com.cn/s/blog_5f0dab1e0100t4kc.html
@chenping2008:
public class Handler1 : IHttpHandler, IRequiresSessionState
IRequiresSessionState 很重要
这样就可以访问到session
@chenping2008: 呵呵,这样好像也不行,我把源代码放到问题补充那里了,希望你能下载来看看具体的原因,谢谢。
@bbyz309:
我什么代码没有修改,就修改了一下:
public class GetUserControl : IHttpHandler,IRequiresSessionState
注意新加的这个IRequiresSessionState 就行了。在原先错误的地方不报错了。
为了加上这个IRequiresSessionState ,需要using System.Web.SessionState;
@chenping2008: 好的,谢谢了。查了MSDN,也基本弄明白这个原因了,谢谢!
错误提示已经告诉你怎么做了啊
我觉得楼主只改那个地方应该也是报错的。
已经按提示的做了,不行的
前台ajax呼叫的什么 发出来看一下
@bbyz309: getUserControl.ashx 试试地址栏访问有没有什么问题
@sym_cn: 这个是没有问题的,因为只有涉及到Session的用户控件页面才报这个问题,其他的都是正常的。谢谢!
@bbyz309: http://hi.baidu.com/lightning_cat/item/71209b14bb41e928f6625cae 是否是这个问题。
@sym_cn: 问题报错是一样的,但是他这个是会用AjaxPro这个框架访问,我的是JQuery的ajax访问。好像不能用他那个方法解决。谢谢~~