亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET與ASP互通COOKIES的一點(diǎn)經(jīng)驗(yàn)

 更新時(shí)間:2010年03月10日 23:04:59   作者:  
ASP與ASP.NET互相整合時(shí),其中文COOKIES信息無(wú)法被互通共享,當(dāng)使用ASP.NET寫入中文COOKIES信息后,使用ASP進(jìn)行讀取,讀出來(lái)的卻是亂碼,而非中文。
在微軟推出.NET并進(jìn)行了大規(guī)模的推廣普及之后,ASP.NET逐漸進(jìn)入了信息化系統(tǒng)開發(fā)的主流。但與此同時(shí),而用ASP開發(fā)的舊系統(tǒng)面則臨被整合,這時(shí),面臨一個(gè)問(wèn)題:ASP與ASP.NET互相整合時(shí),其中文COOKIES信息無(wú)法被互通共享,當(dāng)使用ASP.NET寫入中文COOKIES信息后,使用ASP進(jìn)行讀取,讀出來(lái)的卻是亂碼,而非中文。

  后來(lái)通過(guò)查找資料,不停地實(shí)踐,終于找到了問(wèn)題的根源,中文COOKIES信息在ASP中無(wú)法被正確讀取得原因?yàn)槠渲形木幋a格式不同。

  開發(fā)項(xiàng)目Web.config配置文件中有如下信息:

  <!-- 全球化此節(jié)設(shè)置應(yīng)用程序的全球化設(shè)置。 -->
  <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

  據(jù)此可知,在沒有進(jìn)行項(xiàng)目特殊配置的情況下,系統(tǒng)中的中文COOKIES信息默認(rèn)是通過(guò)“utf-8”編碼方式進(jìn)行傳遞的,而ASP中中文COOKIES信息默認(rèn)是通過(guò)“GB2312”編碼方式進(jìn)行傳遞的,所以ASP與ASP.NET的中文COOKIES信息在默認(rèn)情況下無(wú)法被互通共享,但可以通過(guò)如下方法得以解決:

  用如下方法進(jìn)行寫COOKIE操作:
復(fù)制代碼 代碼如下:

  '----------------------------------------------------------------
  ' 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

  以上方法實(shí)現(xiàn)了ASP可以正確讀取ASP.NET寫入的中文COOKIES信息,但同時(shí)如果在ASP.NET中將讀取過(guò)來(lái)的中文COOKIES信息直接在前臺(tái)顯示時(shí)還會(huì)顯示為亂碼,這是由于ASP.NET以“utf-8”編碼方式顯示“GB2312”編碼方式的中文信息,所以出現(xiàn)了問(wèn)題,可以用如下方法在前臺(tái)頁(yè)面正確顯示中文信息:

  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中無(wú)法被互通共享的問(wèn)題,不過(guò)不知可不可以通過(guò)修改Web.config配置文件中的編碼方式,將“utf-8”編碼方式改為“GB2312”編碼方式解決上面的問(wèn)題,應(yīng)該是可以的,大家可以試一下,告訴我結(jié)果。

  在ASP.NET中我們一般通過(guò)如下方法清除COOKIES信息:
復(fù)制代碼 代碼如下:

  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

  但在通過(guò)以上方法清除COOKIES信息并再次登錄時(shí)ASP將不能讀取ASP.NET的COOKIES,其原因不知為何,但在上面的清除COOKIES信息方法中加入以下語(yǔ)句可解決無(wú)法正確清除COOKIES信息的問(wèn)題:

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

  以上為本人在工作中的一些小小經(jīng)驗(yàn)總結(jié),可能會(huì)有不準(zhǔn)確的地方,望大家批正!

相關(guān)文章

最新評(píng)論