ASP.Net程序中,如何保存一个字符串Cookie,在其它WebForm中可以访问到? 脚本的cookie:document.cookie="key=aaaa;expires=datetime"datetime:有效日期read:document.cookie 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Session["temp"]="34324";其他页面中访问string temp=Session["temp"].ToString(); Cookie中多个变量的设置.设置Cookie:HttpCookie xpcookie=new HttpCookie("param");xpcookie.Values.Add("YYYY",TempYear);xpcookie.Values.Add("MM",TempMonth);xpcookie.Values.Add("Selflag",TempFlag);xpcookie.Values.Add("Selvalue",TempValue);Response.AppendCookie(xpcookie);接到Cookie://得到Cookie值HttpCookie getCookie=Request.Cookies["param"];getyear=getCookie.Values["YYYY"].ToString();getmonth=getCookie.Values["MM"].ToString();flagSel=getCookie.Values["Selflag"].ToString(); string valueSel1=getCookie.Values["Selvalue"].ToString();如果是单个变量:设置:HttpCookie curCookie=new HttpCookie("pass");curCookie.Value="yes";Response.AppendCookie(curCookie);接到:HttpCookie curCookie=Request.Cookies["pass"]; if(curCookie==null){……}else{ string curValue=curCookie.Value.Trim(); ……}上面的Cookie都没有设置时间过期的值,这样就是IE关掉cookie就自动删除。 用了一下Session,发现IE关闭以后,在将刚才的URL打开,Session的值竟然仍然存在,太危险了! defan(defan)兄是好人,试一下先! 试了一下defan(defan)兄的方法,结果竟然和用Session一样,关闭IE再打开后,值仍然存在,是不是这种想法是不对的? 不会啊,如果不设cookie的时间过期的值,关掉IE,Cookie就会自动删除的啊。即使是那个IE不关掉,新开一个新的页面,输入跟刚才一样的路径,那么这个页面还是拿不到Cookie值的。也就是说,从刚才那个页面连接出去的页面可以取到,新页面输入路径是取不到的。这是我以前碰到的问题。(前提是不设cookie的时间过期的参数)。 用了一下,c.Expires=DateTime.MaxValue,也是不行的啊。 另外,你看一下,是不是你设置Cookie的值是在你页面一调用就在执行呢,而且前后两次设置的值是一样的,这样就给你一个误解,以为是原来的cookie没有释放掉。 defan(defan),我也是按照你那样去做的,但是还是可以取到Cookie的值的。 这个很奇怪,你能说一下你的思路吗?譬如初打开一个页面,先检查cookie,如果没有,则设置(如果自动设置,这样就有问题,至少要有一个事件触发一下,或者转到其他页面,譬如认证页面,在认证后设置)。 我先打开登录界面,用户输入操作员和密码,经过中间层认证合法以后,生成一个合法的登录ID号,将该登录ID字符串存入到Cookie中,然后转到Home页,以后每次向服务器请求,都会验证该登录ID,如果非法,则向服务器器的请求失败,合法则服务器响应该请求。这样就要保证该IE关调以后该Cookie能自动失效,否则关调IE以后,不经过登录验证界面,直接在IE中输入URL,向服务器请求,都有可能被认为是经过验证的,这是非常危险的。 在你的IE关掉以后,新打开一个IE,输入任何一个路径,它应该查不到cookie,自动进入登陆页面吧。你现在呢?任意输入路径,都可以进去。或者你会不会有这个问题,你页面进去以后,其实绕过了Cookie认证。你Response.Write(Cookie值)看一下,看看能否得到cookie值。或许根本就会绕过了Response.Write(cookie值)这条语句也不一定呢? 我在登录验证成功后(Login.aspx页)写入如下语句:HttpCookie xpcookie=new HttpCookie("Session");xpcookie.Expires = DateTime.MaxValue;xpcookie.Values.Add("SessID",sessid);xpcookie.Values.Add("OPTrueName",optruename);xpcookie.Values.Add("OPID",opid); Response.AppendCookie(xpcookie);Response.Redirect("Home.aspx",false);然后在Home.aspx中如下:HttpCookie getCookie=Request.Cookies["Session"];string sessid= getCookie.Values["SessID"].ToString();string truename= getCookie.Values["OPTrueName"].ToString();string opid= getCookie.Values["OPID"].ToString();Response.Write("SessID:"+sessid+"|| TrueName:"+truename+"|| OPID:"+opid);关掉IE后再打开IE,在地址栏直接输入:http://localhost/Home.aspx,执行如下语句,发现Cookie的值仍然存在。 去掉xpcookie.Expires = DateTime.MaxValue;这句话,我上面不是说不要加参数吗?加了这句话,Cookie就不会被自动的删除掉,除非过了设定的时间。而你又设了个最大值。 defan(defan) ,谢谢你还这么耐心,其实我将xpcookie.Expires = DateTime.MaxValue这句话去掉还是一样的,因此我怀疑是不是我们俩的计算机在设置上会有不一样才有两种不同的测试结果。 嗯,你这个问题真是很奇怪。至于计算机的设置,我好像就不太清楚了。你不如建一个测试项目,然后就写cookie的设置和取值。看一下效果。因为你现在Login和Home页面的代码已经写的很多了,检查问题的时候会有些乱。或者你可以把那两个页面发给我看看,如果你愿意的话。[email protected] defan(defan),我写的代码已发给你了,请多指教。 asp.net源码(c#.dll文件源码)生成怎么帮助文档 热点按钮如何隐藏服务器控件? web控件就无法相应客户端事件了吗? 请问能不能用程序(。net)来终止sql服务? 求一条sql语句 初学者的小问题........ 我对DataGrid在PageLoad中动太创建的,为何在PostBack后不见了 急急急!datagrid里面的删除delete控件问题请教! 求教在brinkster.com申请的免费空间上配置自己项目的问题,有过经验,成功过的再答 页面刷新后的问题,麻烦高手指点下 在datagrid事件函数取不到一个全局变量的值? c#.asp.net如何获取其他服务器上的网页?
string temp=Session["temp"].ToString();
设置Cookie:
HttpCookie xpcookie=new HttpCookie("param");
xpcookie.Values.Add("YYYY",TempYear);
xpcookie.Values.Add("MM",TempMonth);
xpcookie.Values.Add("Selflag",TempFlag);
xpcookie.Values.Add("Selvalue",TempValue);
Response.AppendCookie(xpcookie);
接到Cookie://得到Cookie值
HttpCookie getCookie=Request.Cookies["param"];
getyear=getCookie.Values["YYYY"].ToString();
getmonth=getCookie.Values["MM"].ToString();
flagSel=getCookie.Values["Selflag"].ToString();
string valueSel1=getCookie.Values["Selvalue"].ToString();如果是单个变量:
设置:
HttpCookie curCookie=new HttpCookie("pass");
curCookie.Value="yes";
Response.AppendCookie(curCookie);接到:
HttpCookie curCookie=Request.Cookies["pass"];
if(curCookie==null)
{
……
}
else
{
string curValue=curCookie.Value.Trim();
……
}上面的Cookie都没有设置时间过期的值,这样就是IE关掉cookie就自动删除。
即使是那个IE不关掉,新开一个新的页面,输入跟刚才一样的路径,那么
这个页面还是拿不到Cookie值的。
也就是说,从刚才那个页面连接出去的页面可以取到,新页面输入路径是取不到的。
这是我以前碰到的问题。(前提是不设cookie的时间过期的参数)。
而且前后两次设置的值是一样的,这样就给你一个误解,以为是原来的cookie没有释放掉。
譬如初打开一个页面,先检查cookie,如果没有,则设置(如果自动设置,这样就有问题,至少要有一个事件触发一下,或者转到其他页面,譬如认证页面,在认证后设置)。
新打开一个IE,输入任何一个路径,它应该查不到cookie,自动进入登陆页面吧。你现在呢?任意输入路径,都可以进去。
或者你会不会有这个问题,你页面进去以后,其实绕过了Cookie认证。
你Response.Write(Cookie值)看一下,
看看能否得到cookie值。或许根本就会绕过了Response.Write(cookie值)
这条语句也不一定呢?
HttpCookie xpcookie=new HttpCookie("Session");
xpcookie.Expires = DateTime.MaxValue;
xpcookie.Values.Add("SessID",sessid);
xpcookie.Values.Add("OPTrueName",optruename);
xpcookie.Values.Add("OPID",opid);
Response.AppendCookie(xpcookie);
Response.Redirect("Home.aspx",false);
然后在Home.aspx中如下:
HttpCookie getCookie=Request.Cookies["Session"];
string sessid= getCookie.Values["SessID"].ToString();
string truename= getCookie.Values["OPTrueName"].ToString();
string opid= getCookie.Values["OPID"].ToString();
Response.Write("SessID:"+sessid+"|| TrueName:"+truename+"|| OPID:"+opid);
关掉IE后再打开IE,在地址栏直接输入:http://localhost/Home.aspx,执行如下语句,发现Cookie的值仍然存在。
我上面不是说不要加参数吗?
加了这句话,Cookie就不会被自动的删除掉,除非过了设定的时间。
而你又设了个最大值。
你不如建一个测试项目,然后就写cookie的设置和取值。看一下效果。
因为你现在Login和Home页面的代码已经写的很多了,检查问题的时候会有些乱。
或者你可以把那两个页面发给我看看,如果你愿意的话。
[email protected]