ASP.NET與ASP互通COOKIES的一點(diǎn)經(jīng)驗(yàn)
后來(lái)通過(guò)查找資料,不停地實(shí)踐,終于找到了問(wèn)題的根源,中文COOKIES信息在ASP中無(wú)法被正確讀取得原因?yàn)槠渲形木幋a格式不同。
開(kāi)發(fā)項(xiàng)目Web.config配置文件中有如下信息:
<!-- 全球化此節(jié)設(shè)置應(yīng)用程序的全球化設(shè)置。 -->
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
據(jù)此可知,在沒(méi)有進(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操作:
'----------------------------------------------------------------
' 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信息:
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)確的地方,望大家批正!
- asp.net 操作cookie的簡(jiǎn)單實(shí)例
- ASP.NET之Response.Cookies.Remove 無(wú)法刪除COOKIE的原因
- ASP.NET筆記之頁(yè)面跳轉(zhuǎn)、調(diào)試、form表單、viewstate、cookie的使用說(shuō)明
- asp.net中使用cookie與md5加密實(shí)現(xiàn)記住密碼功能的實(shí)現(xiàn)代碼
- asp.net Cookie值中文亂碼問(wèn)題解決方法
- Asp.net內(nèi)置對(duì)象之Cookies(簡(jiǎn)介/屬性方法/基本操作及實(shí)例)
- Asp.net cookie的處理流程深入分析
- asp.net關(guān)于Cookie跨域(域名)的問(wèn)題
- asp.net中的cookie使用介紹
- ASP.NET下對(duì)cookies的操作實(shí)現(xiàn)代碼
- asp.net(C#)跨域及跨域?qū)慍ookie問(wèn)題
- ASP.NET獲取不到JS設(shè)置cookies的解決方法
- asp.net頁(yè)面狀態(tài)管理cookie和服務(wù)器狀態(tài)管理Session
- asp.net下cookies操作完美代碼
- Asp.net 基于Cookie簡(jiǎn)易的權(quán)限判斷
- asp.net各種cookie代碼和解析實(shí)例
相關(guān)文章
Asp.Net Core Identity 隱私數(shù)據(jù)保護(hù)的實(shí)現(xiàn)
這篇文章主要介紹了Asp.Net Core Identity 隱私數(shù)據(jù)保護(hù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
asp.net+js實(shí)現(xiàn)批量編碼與解碼的方法
這篇文章主要介紹了asp.net+js實(shí)現(xiàn)批量編碼與解碼的方法,涉及前端的jquery post提交及后臺(tái)C#處理實(shí)現(xiàn)批量編碼與解碼的相關(guān)技巧,需要的朋友可以參考下2016-03-03
如何在ASP.NET Core中使用Session的示例代碼
這篇文章主要介紹了如何在ASP.NET Core中使用Session的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過(guò)程,非常有實(shí)用價(jià)值,需要的朋友可以參考下2014-07-07
.NET?Core使用Redis實(shí)現(xiàn)創(chuàng)建分布式鎖
分布式鎖一般用于確保在分布式系統(tǒng)中,同一時(shí)間只有一個(gè)進(jìn)程可以執(zhí)行某段代碼,本文將通過(guò).NET?Core使用Redis實(shí)現(xiàn)創(chuàng)建分布式鎖,感興趣的可以了解下2025-01-01
給Repeater控件里添加序號(hào)的5種才常見(jiàn)方法介紹
Repeater是我們經(jīng)常用的一個(gè)顯示數(shù)據(jù)集的數(shù)據(jù)控件那么我們?cè)撛趺礊镽epeater控件添加序號(hào)呢?下面編輯為大家介紹幾種常用的為Repeater控件添加序號(hào)的方法2013-09-09
設(shè)置ASP.NET頁(yè)面不被緩存(客戶端/服務(wù)器端取消緩存方法)
設(shè)置頁(yè)面不被緩存:客戶端取消緩存、服務(wù)器具端取消緩存的具體實(shí)現(xiàn)代碼如下感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-06-06
ABP入門系列之分頁(yè)功能的實(shí)現(xiàn)
本節(jié)主要講解了如何使用ABP進(jìn)行后臺(tái)分頁(yè),并順帶講解了ABP后臺(tái)分頁(yè)邏輯的實(shí)現(xiàn)方式。同時(shí)也演示了如何使用X.PagedList進(jìn)行前端分頁(yè)2017-03-03
時(shí)間輕松學(xué)會(huì).NET Core操作ElasticSearch7的方法
這篇文章主要介紹了時(shí)間輕松學(xué)會(huì).NET Core操作ElasticSearch7,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

