線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1878
推到 Plurk!
推到 Facebook!

ICS或Indy如何获取到asp.net程序的session值

尚未結案
sibad_sh
一般會員


發表:1
回覆:0
積分:0
註冊:2008-10-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-15 09:38:00 IP:222.68.xxx.xxx 訂閱
在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-30 09:23:05 IP:121.15.xxx.xxx 訂閱
看来你都没明白 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-30 09:33:54 IP:121.15.xxx.xxx 訂閱
继续:

你的 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.
系統時間:2024-04-21 0:30:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!