这些最基本的问题在任何一本web程序开发的书上都有。很难和你说清楚,因为你的基本认识都是错的。比如说会话是客户端,这是哪对哪。要说最基本的,那就是,一个web系统,分为客户端(浏览器)和服务器端,客户端提交访问请求,服务器端处理,并且返回数据。请注意这个过程和桌面程序的本质不同。一个是,服务器不能主动和客户端通讯,一个是,服务器只是通过http协议和浏览器通讯,它不能获知浏览器的状态,每次请求和响应都是独立的。如果你能理解这些最基本的概念,那么很容易解释如下问题。为什么我们需要用querystring和postdata提交数据,因为http协议下,这是基本且唯一的客户端提交数据的方式。而所谓的控件、回发不过是asp.net基于如上的一种模拟。querystring是最基本的,面向浏览器和搜索引擎的方式。很显然,如果全部使用postdata,那么这样的网页是无法被浏览器收录的,也不能直接通过url请求到。为什么我们需要cookie,因为我们需要跟踪客户端的会话状态。即让服务器将同一个客户端连续发来的多次请求视作一个整体。会话就是这个意思。

解决方案 »

  1.   

    1、forum_id=CSharp是页面传参,用Request["forum_id"]可以得到CSharp,可以理解为当前页面的全局变量,只是这里的定义和附值都由用户设定也可以是aa=CSharp,相于的,Request["aa"]=CSharp
    2、用的浏览器是不兼容中文url的,所以这里需要将中文字符或特殊符号转义字符,但中用Request["xxx"]就可以了,默认将字符转义回来3、多个参数间用&分划
    aspx?aa=123&bb=456&cc=567(注:url不是无限长的,好像http地址的最大长度为255个字符)4、Session只是一个全局的变量,可以用作登陆凭证
    登陆成功时保存凭证Session["userid"]="admin"管理后台的每个页面都要先验证凭证,通过就继续,不通过就返回登陆页,然后结束if(Session["userid"]==null||Session["userid"]!="admin"){
       throw (new Exception("用户没有登陆或登陆已超时!"));
    }
      

  2.   

    从cs转bs请不要从webform开始学,不然很多概念都会理解错误
    webform为了模拟winform,假装web是“有状态”的你可以先补习一下基础知识
    http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html
      

  3.   

    额,方向错误,你应该先把http协议本身看一遍另外对于session,你姑且当cs滴心跳包看把(虽然bs没有soket滴,真是因为没有soket,才更应该有个东西保留维持心跳,已表示这客户存在,并且各种体征正常)ps:现有的bs和cs最不同滴地方,就是现有BS没状态,你所纠结滴都是BS为了保持这状态做滴努力