ASP.NET读取ASP设置的Cookie

    这类问题通常在整合或二次开发ASP网站时遇到。按常理来说,浏览器的Cookie存放在客户端,实际上与服务端使用什么语言无关,但我们在实际操作过程中,总会遇到一些意想不到的问题。

    1. 当ASP写的Cookie的Key中带有下划线,例如我们在ASP中这样设置Cookie:

         Response.Cookies("Admin_User")="管理员";

    那么在aspx.cs的页面,使用Request.Cookie["Admin_User"]  ,是怎么都读不到的。在这里我写了一个循环,将当前cookie的所有Name与Value都输出了一遍,发现下划线“_”已经转义成了“%5F”,而使用Request.Cookie["Admin%5FUser"]  就可以得到我们想要的“管理员”了。

    遇到类似问题的朋友,不妨做这样的尝试。

    2. 还需要注意中文乱码的问题,不管我将字符集设置为GB2312,还是GBK,甚至是UTF-8都没法获得正确的中文,实际上问题出在ASP那边,ASP页面显示简体中文时,需要设置“代码页”(它可读写,整型数,用于表示显示页内容的字符集,简体中文为936,日文为932,ANSI为1252)。

   string cookie = System.Web.HttpUtility.UrlDecode(Request.Cookies["Admin%5FUser"].Value, System.Text.Encoding.GetEncoding(936));

    使用以上的方式,便可以获取包含中文的Cookie了。

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
/* 豆腐制作 都是精品 www.asp888.net 豆腐技术站 如果转载 请添加这个 版权信息 */ [removed] Const COOKIE_NAME As String = "豆腐站点" Const COOKIE_VALUE As String = "http://www.asp888.net" ' 声明 Cookie 对象 Dim objCookieObject As HttpCookie Sub btnSetCookie_OnClick(Sender As Object, E As EventArgs) ' Create a cookie object - I'm passing name and value, ' but you can also pass in a name and set the value later. objCookieObject = New HttpCookie(COOKIE_NAME, COOKIE_VALUE) ' 另外的一种操作Cookie 的 方法 'objCookieObject = New HttpCookie(COOKIE_NAME) 'objCookieObject.Name = COOKIE_NAME 'objCookieObject.Value = "sdsd" ' 设置Cookie 的 过期时间 2001/12/31 23:59:59 objCookieObject.Expires = New DateTime(2001, 12, 11, 23, 59, 59) ' 下面的这些可以不使用 objCookieObject.Domain = "www.asp888.net" objCookieObject.Path = "/path/" objCookieObject.Secure = True Response.AppendCookie(objCookieObject) End Sub Sub btnRemoveCookie_OnClick(Sender As Object, E As EventArgs) objCookieObject = New HttpCookie(COOKIE_NAME) ' 删除Cookie objCookieObject.Expires = New DateTime(1974, 11, 12) Response.AppendCookie(objCookieObject) End Sub Sub btnGetCookie_OnClick(Sender As Object, E As EventArgs) objCookieObject = Request.Cookies(COOKIE_NAME) If Not(objCookieObject = null) Then lblCookieDetails.Text = objCookieObject.Name lblCookieDetailsName.Text = objCookieObject.Name lblCookieDetailsValue.Text = objCookieObject.Value lblCookieDetailsExpires.Text = objCookieObject.Expires.ToString lblCookieDetailsDomain.Text = objCookieObject.Domain lblCookieDetailsPath.Text = objCookieObject.Path lblCookieDetailsSecure.Text = objCookieObject.Secure.ToString lblCookieDetailsHasKeys.Text = objCookieObject.HasKeys.ToString Else lblCookieDetails.Text = "Cookie Not Set!" lblCookieDetailsName.Text = "" lblCookieDetailsValue.Text = "" lblCookieDetailsExpires.Text = "" lblCookieDetailsDomain.Text = "" lblCookieDetailsPath.Text = "" lblCookieDetailsSecure.Text = "" lblCookieDetailsHasKeys.Text = "" End If End Sub [removed] <html> <head>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值