首页 新闻 赞助 找找看

global.asax文件中session问题

0
悬赏园豆:30 [已解决问题] 解决于 2009-12-02 13:20
1 protected void Application_AcquireRequestState(Object sender, EventArgs e)
2 {
3 HttpApplication happ = (HttpApplication)sender;
4 HttpContext context = happ.Context;
5 string url = context.Request.RawUrl;
6 string path = url.Split('/')[1];
7 switch (path)
8 {
9 case "user":
10 case "User":
11
12 if (HttpContext.Current.Session != null)
13 {
14 if (HttpContext.Current.Session["user"] == null)
15 {
16 Response.Redirect("/login/index.aspx");
17 }
18 }
19 else
20 {
21 Response.Redirect("/login/index.aspx");
22 }
23 break;
24 case "admin":
25 break;
26 default:
27 break;
28 }
29 }

我是想对请求路径进行过滤,比如说是当访问user文件夹下的文件一定登陆才行,看我上面写的,可是由于我在user文件夹下的某个文件里用了AJAX,这时候 if (HttpContext.Current.Session != null) 这句就一直成立了,我想知道怎么才能在用ajax的时候也传送上下文

cnb_mtime的主页 cnb_mtime | 初学一级 | 园豆:58
提问于:2009-12-02 12:35
< >
分享
最佳答案
-1

用ASPX,不用ashx的文件。

ashx對session不支持

或者ashx继承一下   System.Web.SessionState.IReadOnlySessionState   的接口

public class Handler : IHttpHandler, IRequiresSessionState

{


}

收获园豆:30
woody.wu | 老鸟四级 |园豆:3621 | 2009-12-02 12:44
这个方法是global.asax文件中的,那写不用ajax的文件,用起来就没问题
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 12:48
public class Global : System.Web.HttpApplication, IRequiresSessionState 这个我是这样写的,我对这个文件不是很熟悉嗯,那些从浏览器直接访问的都没问题,用ajax以后HttpContext.Current.Session 等于 null了,就是这个问题
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 12:51
你用AJAX調用的是不是ashx後綴的頁面?
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 12:52
@{{°莪乖乖: global.asax這是全局文件,不能直接調用的.
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 12:54
@woody.wu: var jsondata = jQuery.param({ "action": "pwdcheck", "password": password }); $.ajax({ type: "POST", url: "/User/User.ashx", data: jsondata, 可是还没到那个界面,他应该提前被global.asax过滤下啊,就这个时候获取不到了
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 12:58
@woody.wu:global.asax 每訪問個頁面時候 訪問該方法 Application_AcquireRequestState
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 13:01
@{{°莪乖乖: User.ashx把這個頁面實現下 System.Web.SessionState.IReadOnlySessionState 接口
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 13:02
@woody.wu: User.ashx不會創建session 的。
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 13:03
@woody.wu: 真的好的呢,可我还是不明白我用ajax发送的请求 首先经过global.asax文件,然后在由User.ashx处理,为什么在User.ashx中实现这个接口就能影响到global.asax呢?
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 13:14
@{{°莪乖乖:你用到了session了呀。
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 13:17
@woody.wu:这样也会影响到啊,o(︶︿︶)o 唉,我说呢,谢谢嗯
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 13:19
@woody.wu:其实我还是没整明白为啥User.ashx会影响到那个文件,那岂不是我所有的文件都得继承那个接口了?
cnb_mtime | 园豆:58 (初学一级) | 2009-12-02 13:25
@{{°莪乖乖:.ashx類型的文件要使用SESSION的話,都需要實現IRequiresSessionState接口的.用aspx的話可以不用.
woody.wu | 园豆:3621 (老鸟四级) | 2009-12-02 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册