public class PSOCookie
{
HttpContext context;
HttpCookie clientCookie = new HttpCookie("ClientUser"); public DateTime ExpiresTime
{
get;
set;
} /// <summary>
/// 构造函数,初始化HttpContext,设置默认过期时间1天
/// </summary>
/// <param name="paraContext">客户端HttpContext</param>
public PSOCookie(HttpContext httpContext)
{
context = httpContext;
this.ExpiresTime = DateTime.Now.AddDays(1);
} /// <summary>
/// 添加用户信息到Cookie中
/// </summary>
/// <param name="cookieInfo"></param>
public void AddUserCookie(BEL.UserCookieInfo cookieInfo)
{
clientCookie.Expires = this.ExpiresTime;
//加密保存
clientCookie["UserID"] = xxtea.Encrypt(cookieInfo.UserID);
clientCookie["UserName"] = xxtea.Encrypt(cookieInfo.UserName);
clientCookie["UserNum"] = xxtea.Encrypt(cookieInfo.UserNumber);
context.Response.Cookies.Add(clientCookie);
} /// <summary>
/// 添加用户信息到Cookie中
/// </summary>
/// <param name="userID"></param>
/// <param name="userName"></param>
/// <param name="userNum"></param>
public void AddUserCookie(string userID,string userName,string userNum)
{
BEL.UserCookieInfo cookieInfo = new BEL.UserCookieInfo(userID, userName, userNum);
AddUserCookie(cookieInfo);
} /// <summary>
/// 删除cookie中的用户信息
/// </summary>
public void DeleteUserCookie()
{
clientCookie.Expires = DateTime.Now.AddDays(-1);
clientCookie["UserID"] = string.Empty;
context.Response.Cookies.Add(clientCookie);
} /// <summary>
/// 获取cookie中的用户ID,用户名和用户在线编号
/// </summary>
/// <returns>登录用户实体类</returns>
public BEL.UserCookieInfo GetCookieUserInfo()
{
//客户端Cookie是否存在
HttpCookie cookie = context.Request.Cookies["ClientUser"];
if (cookie != null)
{
//解密用户信息返回
BEL.UserCookieInfo userCookieInfo = new BEL.UserCookieInfo();
userCookieInfo.UserID = xxtea.Decrypt(cookie["UserID"]);
userCookieInfo.UserName = xxtea.Decrypt(cookie["UserName"]);
userCookieInfo.UserNumber = xxtea.Decrypt(cookie["UserNum"]); return userCookieInfo;
}
else//不存在返回空引用
{
return null;
}
}
} 在继承IHTTPModuel的PSO中调用 void context_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
HttpContext context = app.Context; PSOCookie psoCookie = new PSOCookie(context); BEL.UserCookieInfo userCookieInfo = new UserCookieInfo();
userCookieInfo.UserID = "10" userCookieInfo.UserName = "Leo" userCookieInfo.UserNumber = string.Empty; psoCookie.ExpiresTime = DateTime.Now.AddDays(1); psoCookie.AddUserCookie(userCookieInfo); } 为何不能在客户端写入Cookie呢, 再次读取还是空的?有哪位知道原因呢?
{
HttpContext context;
HttpCookie clientCookie = new HttpCookie("ClientUser"); public DateTime ExpiresTime
{
get;
set;
} /// <summary>
/// 构造函数,初始化HttpContext,设置默认过期时间1天
/// </summary>
/// <param name="paraContext">客户端HttpContext</param>
public PSOCookie(HttpContext httpContext)
{
context = httpContext;
this.ExpiresTime = DateTime.Now.AddDays(1);
} /// <summary>
/// 添加用户信息到Cookie中
/// </summary>
/// <param name="cookieInfo"></param>
public void AddUserCookie(BEL.UserCookieInfo cookieInfo)
{
clientCookie.Expires = this.ExpiresTime;
//加密保存
clientCookie["UserID"] = xxtea.Encrypt(cookieInfo.UserID);
clientCookie["UserName"] = xxtea.Encrypt(cookieInfo.UserName);
clientCookie["UserNum"] = xxtea.Encrypt(cookieInfo.UserNumber);
context.Response.Cookies.Add(clientCookie);
} /// <summary>
/// 添加用户信息到Cookie中
/// </summary>
/// <param name="userID"></param>
/// <param name="userName"></param>
/// <param name="userNum"></param>
public void AddUserCookie(string userID,string userName,string userNum)
{
BEL.UserCookieInfo cookieInfo = new BEL.UserCookieInfo(userID, userName, userNum);
AddUserCookie(cookieInfo);
} /// <summary>
/// 删除cookie中的用户信息
/// </summary>
public void DeleteUserCookie()
{
clientCookie.Expires = DateTime.Now.AddDays(-1);
clientCookie["UserID"] = string.Empty;
context.Response.Cookies.Add(clientCookie);
} /// <summary>
/// 获取cookie中的用户ID,用户名和用户在线编号
/// </summary>
/// <returns>登录用户实体类</returns>
public BEL.UserCookieInfo GetCookieUserInfo()
{
//客户端Cookie是否存在
HttpCookie cookie = context.Request.Cookies["ClientUser"];
if (cookie != null)
{
//解密用户信息返回
BEL.UserCookieInfo userCookieInfo = new BEL.UserCookieInfo();
userCookieInfo.UserID = xxtea.Decrypt(cookie["UserID"]);
userCookieInfo.UserName = xxtea.Decrypt(cookie["UserName"]);
userCookieInfo.UserNumber = xxtea.Decrypt(cookie["UserNum"]); return userCookieInfo;
}
else//不存在返回空引用
{
return null;
}
}
} 在继承IHTTPModuel的PSO中调用 void context_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
HttpContext context = app.Context; PSOCookie psoCookie = new PSOCookie(context); BEL.UserCookieInfo userCookieInfo = new UserCookieInfo();
userCookieInfo.UserID = "10" userCookieInfo.UserName = "Leo" userCookieInfo.UserNumber = string.Empty; psoCookie.ExpiresTime = DateTime.Now.AddDays(1); psoCookie.AddUserCookie(userCookieInfo); } 为何不能在客户端写入Cookie呢, 再次读取还是空的?有哪位知道原因呢?
解决方案 »
- WinFrom窗体如何实现QQ,酷狗那个的效果。求高手!!急!!
- 服务器应用程序不可用?
- 论坛抢楼活动的设计理念
- 无法打开项目
- 如何禁止网页刷新和禁止点击IE右上角小叉子关闭网页?
- asp.net中将网页中的内容导到Excel时打开的问题。急急急!
- 我的“新增、保存”按钮在服务上能点击能执行,而我在下面客户端运行该程序点击它没反应,请问高手是什么原因?
- 页面跳转问题。。。搞不定呀。。。
- 关于在aspx中加入JavaScript
- DropDownList只能提供选择功能,怎么能做到又能选择,又可以自己输入text?
- ASP.NET 在session级别的阻塞?
- 从客户端中检测到有潜在危险的 Request.Form 值???
{
get;
set;
}
这里是故意简写的?!
我在你的代码里面没有见到新建cookie对象的迹象
那企不是每次都是一个新的cookie??之前的cookie根本就没有作用吖.....
每次实例化的时候都是新建的这个cookie对象
然后你再调用这个类里面的GetCookieUserInfo方法来读这个刚刚新建的对象
里面的信息(如果在"本次"使用中还没有进行设置)就一定是取不到的啊
读取cookies有点类似于post过来的数据,你每次取的都是上一次的数据吧