今天写一个小的BS程序,需要用到登录,因为不能使用ASP.net的内置登录方式(以前给企业写的程序全是这种方式),只好自己写代码来进行登录,想了想也很简单,使用一个Session来记录登录情况就可以了。
具体操作方式是在登录代码后进行Session["User"] = user ; 赋值操作,然后再Response.Redirect("default.aspx");而在default.aspx里对Session["User"] 判断一下就可以了。
但是结果却让我很是郁闷,不管我怎么登录,在default.aspx里Session["User"] 始终不存在!
我还傻傻的把框架卸载了重装,还是一样。
哎,搞了这么多年编程还是头一次出现这么让人困惑的地方,几乎无从下手了。
发了一阵呆以后,突然想试试Session是不是真的不好用了,我建了一个简单的项目,测试了一下,session很正常,唯一的区别是在这里我没有使用Response.Redirect方法,看来问题在这里了。
又查了一下资料发现,Redirect方法是通过服务器把地址发送给客户端,客户端再请求服务器这个地址来得到的,这个过程里,实际上是两次请求过程。又找了一个Server.Transfer方法,它直接在服务器端跳转,不用再让客户端请求,对于客户端来说,还是相当于只进行了一次请求。
把Response.Redirect换成Server.Transfer方法后,果然一切OK了,呵呵