ICS或Indy如何获取到asp.net程序的session值 |
尚未結案
|
sibad_sh
一般會員 發表:1 回覆:0 積分:0 註冊:2008-10-24 發送簡訊給我 |
在login.aspx中
Session[key] = "123456"; 在info.aspx中 if (Session[key] == "123456") { Reponse.Write("0"); } else { Reponse.Write(Session[key]); } 在浏览器中返回值一直都是0 在ICS程序中: Http.URL := 'http://localhost/login.aspx'; .... Http.Get; Http.Close; ... Http.URL := 'http://localhost/info.aspx'; .... 获取到得到的是空,也就是获取的Session值错误 请问如何才能获取到Session的值?用Indy可行吗? |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
看来你都没明白 Session 是个什么东西,也没明白 asp.net 和 DELPHI 分别是什么。
简单说,delphi 是执行在你的客户端电脑里的程序,而 asp.net 是执行在服务器端的 IIS 里的程序。 而所谓的 Session,是asp.net 的程序内部的一个东西! 因为是执行在服务器端的,所以这个 Session 是在服务器端的电脑里的。 你的asp.net 的代码只是在服务器端判断 Session 是否有,有的话,就向客户端的浏览器输出0字符。 那么,在客户端执行一段 delphi 程序,怎么可能获得服务器端的 Session 呢?根本就是没可能的。 |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
继续:
你的 DELPHI 的代码是: 在ICS程序中: Http.URL := 'http://localhost/login.aspx'; .... Http.Get; Http.Close; ... Http.URL := 'http://localhost/info.aspx'; 这段代码,是用 DELPHI 的代码来模拟浏览器向服务器端发出HTTP请求。看起来浏览器访问 info.aspx 的时候都可以看到有 Session,为什么用 delphi 的代码去访问,就看不到了呢? 这里,你需要知道 Session 究竟是个什么东西才行了。Session 是服务器端用来记住客户端的东西。因为 http 访问是非连接的。你访问第一个页面 login.aspx 以后,客户端就断开了和服务器端的连接。当你再次访问 info.aspx 的时候,服务器端必须通过某种方式知道你是原来那个客户端,才会找到对应的 Session ---- 当有多个客户端同时访问服务器的时候,服务器会为每个客户端维护一个 Session 的。当你在 asp.net 里写 Session[key] 的时候,其实是在 asp.net 的框架里自动调用的是当前访问客户的 Session。 asp.net 对于如何辨别客户端,可能采用 cookie 的办法,也可能采用 HTML 的隐藏字段的办法。这些办法都是在每次访问的时候,通过返回给客户端的 html,向客户端写入一些标志,客户端的浏览器会保存住标志,当浏览器下次访问服务器的时候,会提交相应的标志。而服务器会根据收到的标志来查找对应的 session. 上述过程,asp.net 封装得比较好,写 asp.net 代码的 programmer 不用去知道session的工作机理也能写出使用 session 的 program 来。但如果你的客户端不是浏览器而是自己写的程序,就需要自己去处理本来应该是浏览器要处理的东西了。比如处理 cookie. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |