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

 更新时间:2006年09月28日 00:00:00   作者:  
  在微软推出.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()

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

 

相关文章

  • asp.net实现的群发邮件功能详解

    asp.net实现的群发邮件功能详解

    这篇文章主要介绍了asp.net实现的群发邮件功能,结合具体实例形式分析了asp.net基于SMTP服务群发QQ邮件的相关操作技巧与注意事项,需要的朋友可以参考下
    2017-05-05
  • Asp.Net HttpHandler 妙用

    Asp.Net HttpHandler 妙用

    很多时候,我们新建一个xxx.aspx页和xxx.aspx.cs文件,不过是为了实现一个很简单的功能
    2009-04-04
  • Asp.net禁用页面缓存的方法总结

    Asp.net禁用页面缓存的方法总结

    这篇文章主要介绍了Asp.net禁用页面缓存的方法,需要的朋友可以参考下
    2014-02-02
  • 分享提高ASP.NET Web应用性能的技巧

    分享提高ASP.NET Web应用性能的技巧

    这篇文章主要为大家分享提高ASP.NET Web应用性能的技巧和方法,感兴趣的朋友可以参考一下
    2016-01-01
  • CZGL.ProcessMetrics监控.NET应用

    CZGL.ProcessMetrics监控.NET应用

    这篇文章介绍了CZGL.ProcessMetrics监控.NET应用的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • ASP.Net Core读取配置文件的三种方法小结

    ASP.Net Core读取配置文件的三种方法小结

    ASP.NET Core支持多种格式的配置文件,如JSON、XML、INI等,本文就来介绍一下ASP.Net Core读取配置文件的三种方法,感兴趣的可以了解一下
    2024-02-02
  • ASP.NET Core中的对象池化技术详解

    ASP.NET Core中的对象池化技术详解

    这篇文章主要为大家详细介绍了ASP.NET Core中的对象池化技术的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • asp.net操作过程中常见错误的解决方法

    asp.net操作过程中常见错误的解决方法

    这篇文章主要介绍了asp.net操作过程中常见错误的解决方法,主要有IIS无法识别ASP.NET、 SQL Server不允许进行远程连接可能会导致此失败等问题,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • 基于.Net Core认证授权方案之JwtBearer认证

    基于.Net Core认证授权方案之JwtBearer认证

    这篇文章介绍了基于.Net Core认证授权方案之JwtBearer认证,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • .NET 刷新页面防止表单二次提交的实现方法

    .NET 刷新页面防止表单二次提交的实现方法

    页面上按钮是服务器控件,现在刷新页面要防止按钮事件重复执行。这篇文章给大家带来了.net刷新页面防止表单二次提交的实现方法,非常不错,感兴趣的朋友一起看看吧
    2016-09-09

最新评论