首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

StateServer Cookies有关问题

2012-05-12 
StateServer Cookies问题登录代码C# codeif (!string.IsNullOrEmpty(AutoLogin)){//添加cookiesHttpCookie

StateServer Cookies问题
登录代码

C# code
if (!string.IsNullOrEmpty(AutoLogin))            {//添加cookies                HttpCookie hc = new HttpCookie("userid");                hc.Value = CurrentMember.ID.ToString();                hc.Expires = DateTime.Now.AddDays(1000);                context.Response.Cookies.Add(hc);            }            else            {//移除cookies                HttpCookie hc = new HttpCookie("userid");                hc.Expires = DateTime.Now.AddDays(-10000);                context.Response.Cookies.Add(hc);            }

读取cookies的代码
C# code
HttpCookieCollection hcc = context.Request.Cookies;            if (currentMember == null)            {                Log.write("session为空,检测Cookies值");                if (hcc["userid"] != null)                {                    Log.write("cookies值不为空,值为" + hcc["userid"].Value);                    currentMember = ModelList.MemberList.Where(x => x.ID == hcc["userid"].Value.ToInt()).FirstOrDefault();                }            }

web.config部分配置
XML code
<sessionStatemode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false"timeout="20"/>

情况是这样的
假如当前出了以下问题
情况一:任何一个用户访问网站,不管他是否登录,也就说不管有没有cookies,都会自动登录成userid为1的用户,即使把“自动勾掉”都不行
这时,如果重新编译整个网站,又会出现以下问题
情况二:任何一个用户访问网站,登录之后,不管他有没有选择自动登录,都无法实现自动登录,也就是说cookies没有获取到
这时,如果再重新编译整个网站,又会出现情况一,再编译,又成了情况二
这哪儿跟哪儿啊···迷糊了····

[解决办法]
context.Response.Cookies

context.Request.Cookies
都是可以使用的,但他们是有区别的,使用的时候要注意,参见区别
Request.Cookies 和 Response.Cookies 的区别
[解决办法]
{//移除cookies
HttpCookie hc = new HttpCookie("userid");
hc.Expires = DateTime.Now.AddDays(-10000);
context.Response.Cookies.Add(hc);
为何每次都要new一下,
这个应该是request.cookie["useid"]

热点排行