ASP与ASP.NET互通COOKIES的一点经验

asp.net|cookie|cookies

   在微软推出.NET并进行了大规模的推广普及之后,ASP.NET逐渐进入了信息化系统开发的主流。但与此同时,而用ASP开发的旧系统面则临被整合,这时,面临一个问题:ASP与ASP.NET互相整合时,其中文COOKIES信息无法被互通共享,当使用ASP.NET写入中文COOKIES信息后,使用ASP进行读取,读出来的却是乱码,而非中文。
    后来通过查找资料,不停地实践,终于找到了问题的根源,中文COOKIES信息在ASP中无法被正确读取得原因为其中文编码格式不同。
    开发项目Web.config配置文件中有如下信息:

    <!--  全球化          此节设置应用程序的全球化设置。    -->
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

    据此可知,在没有进行项目特殊配置的情况下,系统中的中文COOKIES信息默认是通过“utf-8”编码方式进行传递的,而ASP中中文COOKIES信息默认是通过“GB2312”编码方式进行传递的,所以ASP与ASP.NET的中文COOKIES信息在默认情况下无法被互通共享,但可以通过如下方法得以解决:
    用如下方法进行写COOKIE操作:

        '----------------------------------------------------------------
        ' Name:        WriteCookie(ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String)
        ' Parameters:
        '    [ByVal] strCookieName - cookie名字
        '    [ByVal] strKeyName - 键名字
        '    [ByVal] strKeyValue - 键值。
        ' Return:      String
        '----------------------------------------------------------------
        Public Function WriteCookie(ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String) As String
            Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
            strKeyValue = System.Web.HttpUtility.UrlEncode(strKeyValue, objEnc)
            System.Web.HttpContext.Current.Response.Cookies(strCookieName)(strKeyName) = strKeyValue
        End Function

    以上方法实现了ASP可以正确读取ASP.NET写入的中文COOKIES信息,但同时如果在ASP.NET中将读取过来的中文COOKIES信息直接在前台显示时还会显示为乱码,这是由于ASP.NET以“utf-8”编码方式显示“GB2312”编码方式的中文信息,所以出现了问题,可以用如下方法在前台页面正确显示中文信息:

        Dim uName As String = System.Web.HttpContext.Current.Server.UrlDecode(System.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
        Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
        uName = System.Web.HttpUtility.UrlDecode(uName, objEnc)

    以上方法解决了中文COOKIES信息在ASP与ASP.NET中无法被互通共享的问题,不过不知可不可以通过修改Web.config配置文件中的编码方式,将“utf-8”编码方式改为“GB2312”编码方式解决上面的问题,应该是可以的,大家可以试一下,告诉我结果。

    在ASP.NET中我们一般通过如下方法清除COOKIES信息:

        Sub CleanCookies()
            Dim i As Integer
            Dim cookie As System.Web.HttpCookie
            For i = 0 To System.Web.HttpContext.Current.Request.Cookies.Count - 1
                cookie = System.Web.HttpContext.Current.Request.Cookies(i)
                System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Value = ""
                System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
            Next
        End Sub

    但在通过以上方法清除COOKIES信息并再次登录时ASP将不能读取ASP.NET的COOKIES,其原因不知为何,但在上面的清除COOKIES信息方法中加入以下语句可解决无法正确清除COOKIES信息的问题:

        System.Web.HttpContext.Current.Response.Cookies.Clear()

    以上为本人在工作中的一些小小经验总结,可能会有不准确的地方,望大家批正!

时间: 2024-09-19 09:09:53

ASP与ASP.NET互通COOKIES的一点经验的相关文章

ASP与ASP.NET互通COOKIES的一点经验_实用技巧

  在微软推出.NET并进行了大规模的推广普及之后,ASP.NET逐渐进入了信息化系统开发的主流.但与此同时,而用ASP开发的旧系统面则临被整合,这时,面临一个问题:ASP与ASP.NET互相整合时,其中文COOKIES信息无法被互通共享,当使用ASP.NET写入中文COOKIES信息后,使用ASP进行读取,读出来的却是乱码,而非中文.    后来通过查找资料,不停地实践,终于找到了问题的根源,中文COOKIES信息在ASP中无法被正确读取得原因为其中文编码格式不同.    开发项目Web.co

做完一个小网站的一点经验总结(1): asp.net 与access数据库结合

access|asp.net|数据|数据库 第一次跟别人做东西,自己的一点经验,写下来,虽然比较菜,但还是要做点记录,如有错误缺漏,请各位不吝赐教,谢谢: )以前都是用asp.net 与sqlServer2000 结合做东西的,这次是用access,虽然是第一次用,但感觉与sqlServer2000的用法区别不大,以下对二者的用法做比较:SqlServer2000:    1>命名空间  using System.Data;                          using Syst

Asp.net+Xml实现无数据库论坛一点即通

asp.net|xml|数据|数据库 起草语:流行论坛(我们重点讨论ASP,ASP.NET论坛)的开发思路 老手可略过此节,就读下节. 目前,网上论坛各式各样各种版本不计其数,归根结底如何神通其核心数据存取仓库都是"数据库",我是指我们常用的ACCESS SQLSERVER等等这种形式的"数据库",而后由PHP ASP ASP.NET JSP等等这些后台语言通过中心"ADO,SQL"两条线,像伐木搭桥似的一小块一小块(会员注册.会员登陆.论坛栏目

ASP+与ASP有什么不同

asp+ 编译:http://www.aspcn.com 飞刀 原文出自http://www.asptoday.com 看到翻译就头疼,而且这篇文章还很长啊,本来这篇文章很早就会写完,不过为了不争气的中国队又耽误了几天,跑到工体,还是输了....... 在以前的文章中我们认识到ASP+是一个完整的操作系统的一部分.但是为什么ASP+不同于以前版本的ASP?他们之间到底有什么不同?如果你仅仅是运行一些页面或应用程序,那么你可能完全不会注意到他们之前的区别. 一旦你打开ASP+SDK或者帮助文件,你

动态网站Web开发PHP、ASP还是ASP.NET(1)

这是一个经常被提出的问题,并且它很容易把人们带入争论Linux还是Windows的歧途.这样的争论事实上反映出了对于相互竞争的Web开发技术要进行并行分析是多么困难的一件事情,而这一难度同时因为开发人员对任何可比较操作系统的不同意见而大大增加. 所以与其继续参与到这样的争论中,我们还不如来看看每一项技术对于特定Web开发以及运行环境所表现出的优势.尽管ASP和PHP的相似程度大于其中任意一种与ASP.NET的相似程度,我们还是要讨论ASP.NET.原因是开发人员常常将其与ASP相混淆,并且在微软

ASP.NET与ACCESS结合建设网站的经验总结

access|asp.net 第一次跟别人做东西,自己的一点经验,写下来,虽然比较菜,但还是要做点记录,如有错误缺漏,请各位不吝赐教,谢谢: ) 以前都是用asp.net 与sqlServer2000 结合做东西的,这次是用access,虽然是第一次用,但感觉与sqlServer2000的用法区别不大,以下对二者的用法做比较: SqlServer2000: 1>命名空间  using System.Data;    using System.Data.SqlDb;    2>连接语句等 主要记

在ASP与ASP.NET之间共享对话状态(1)

asp.net [前言:]ASP.NET是微软提供的最新的开发基于Web的应用程序的技术.它提供了大量的比传统ASP脚本技术的好处,包括: 1)通过把UI表现层(presentation)与商业逻辑(business logic)分开建立了更好的开发结构: 2)使用完全编译的代码代替了传统ASP的代码翻译: 3)它编译特性与每个支持的方法协同,这意味着使用ASP.NET的站点比使用传统的ASP站点的性能更高. 尽管把存在的ASP应用程序转换到ASP.NET有很多潜在的好处,也有些ASP应用程序任

动态网站web开发 PHP、ASP还是ASP.NET

 这是一个经常被提出的问题,并且它很容易把人们带入争论Linux还是Windows的歧途.这样的争论事实上反映出了对于相互竞争的Web开发技术要进行并行分析是多么困难的一件事情,而这一难度同时因为开发人员对任何可比较操作系统的不同意见而大大增加.     所以与其继续参与到这样的争论中,我们还不如来看看每一项技术对于特定Web开发以及运行环境所表现出的优势.尽管ASP和PHP的相似程度大于其中任意一种与ASP.NET的相似程度,我们还是要讨论ASP.NET.原因是开发人员常常将其与ASP相混淆,

在ASP与ASP.NET之间共享对话状态

asp.net [前言:]ASP.NET是微软提供的最新的开发基于Web的应用程序的技术.它提供了大量的比传统ASP脚本技术的好处,包括: 1)通过把UI表现层(presentation)与商业逻辑(business logic)分开建立了更好的开发结构: 2)使用完全编译的代码代替了传统ASP的代码翻译: 3)它编译特性与每个支持的方法协同,这意味着使用ASP.NET的站点比使用传统的ASP站点的性能更高. 尽管把存在的ASP应用程序转换到ASP.NET有很多潜在的好处,也有些ASP应用程序任