ASP與ASP.NET互通COOKIES的一點(diǎn)經(jīng)驗(yàn)
后來通過查找資料,不停地實(shí)踐,終于找到了問題的根源,中文COOKIES信息在ASP中無法被正確讀取得原因?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)是通過“utf-8”編碼方式進(jìn)行傳遞的,而ASP中中文COOKIES信息默認(rèn)是通過“GB2312”編碼方式進(jìn)行傳遞的,所以ASP與ASP.NET的中文COOKIES信息在默認(rèn)情況下無法被互通共享,但可以通過如下方法得以解決:
用如下方法進(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中將讀取過來的中文COOKIES信息直接在前臺(tái)顯示時(shí)還會(huì)顯示為亂碼,這是由于ASP.NET以“utf-8”編碼方式顯示“GB2312”編碼方式的中文信息,所以出現(xiàn)了問題,可以用如下方法在前臺(tái)頁面正確顯示中文信息:
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”編碼方式解決上面的問題,應(yīng)該是可以的,大家可以試一下,告訴我結(jié)果。
在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信息并再次登錄時(shí)ASP將不能讀取ASP.NET的COOKIES,其原因不知為何,但在上面的清除COOKIES信息方法中加入以下語句可解決無法正確清除COOKIES信息的問題:
System.Web.HttpContext.Current.Response.Cookies.Clear()
以上為本人在工作中的一些小小經(jīng)驗(yàn)總結(jié),可能會(huì)有不準(zhǔn)確的地方,望大家批正!
相關(guān)文章
c# .Net Core靜態(tài)文件服務(wù)器的新人入門教程
這篇文章主要給大家介紹了關(guān)于c# .Net Core靜態(tài)文件服務(wù)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
ASP.NET MVC使用ActionFilterAttribute實(shí)現(xiàn)權(quán)限限制的方法(附demo源碼下載)
這篇文章主要介紹了ASP.NET MVC使用ActionFilterAttribute實(shí)現(xiàn)權(quán)限限制的方法,結(jié)合實(shí)例形式分析了ASP.NET MVC使用ActionFilterAttribute過濾類實(shí)現(xiàn)權(quán)限限制的步驟與相關(guān)技巧,并附帶demo源碼供讀者下載,需要的朋友可以參考下2016-04-04
ASP.NET Core MVC獲取請求的參數(shù)方法示例
這篇文章主要給大家介紹了關(guān)于ASP.NET Core MVC是如何獲取請求的參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
.Net Core 多文件打包壓縮的實(shí)現(xiàn)代碼
最近項(xiàng)目需要實(shí)現(xiàn)多文件打包的功能,本文就詳細(xì)的介紹了.Net Core 多文件打包壓縮的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

