ASP与ASP.NET互通COOKIES的一点经验
后来通过查找资料,不停地实践,终于找到了问题的根源,中文COOKIES信息在ASP中无法被正确读取得原因为其中文编码格式不同。
开发项目Web.config配置文件中有如下信息:
<!-- 全球化 此节设置应用程序的全球化设置。 -->
<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>
据此可知,在没有进行项目特殊配置的情况下,系统中的中文COOKIES信息默认是通过“utf-8”编码方式进行传递的,而ASP中中文COOKIES信息默认是通过“GB2312”编码方式进行传递的,所以ASP与ASP.NET的中文COOKIES信息在默认情况下无法被互通共享,但可以通过如下方法得以解决:
用如下方法进行写COOKIE操作:
"----------------------------------------------------------------
"Name: WriteCookie(ByValstrCookieNameAsString,ByValstrKeyNameAsString,ByValstrKeyValueAsString)
"Parameters:
" [ByVal]strCookieName-cookie名字
" [ByVal]strKeyName-键名字
" [ByVal]strKeyValue-键值。
"Return: String
"----------------------------------------------------------------
PublicFunctionWriteCookie(ByValstrCookieNameAsString,ByValstrKeyNameAsString,ByValstrKeyValueAsString)AsString
DimobjEncAsSystem.Text.Encoding=System.Text.Encoding.GetEncoding("GB2312")
strKeyValue=System.Web.HttpUtility.UrlEncode(strKeyValue,objEnc)
System.Web.HttpContext.Current.Response.Cookies(strCookieName)(strKeyName)=strKeyValue
EndFunction
以上方法实现了ASP可以正确读取ASP.NET写入的中文COOKIES信息,但同时如果在ASP.NET中将读取过来的中文COOKIES信息直接在前台显示时还会显示为乱码,这是由于ASP.NET以“utf-8”编码方式显示“GB2312”编码方式的中文信息,所以出现了问题,可以用如下方法在前台页面正确显示中文信息:
DimuNameAsString=System.Web.HttpContext.Current.Server.UrlDecode(System.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
DimobjEncAsSystem.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信息:
SubCleanCookies()
DimiAsInteger
DimcookieAsSystem.Web.HttpCookie
Fori=0ToSystem.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
EndSub
但在通过以上方法清除COOKIES信息并再次登录时ASP将不能读取ASP.NET的COOKIES,其原因不知为何,但在上面的清除COOKIES信息方法中加入以下语句可解决无法正确清除COOKIES信息的问题:
System.Web.HttpContext.Current.Response.Cookies.Clear()
以上为本人在工作中的一些小小经验总结,可能会有不准确的地方,望大家批正!
相关文章
- .Net Core3.1 SignalR for WPF Asp.net
- ASP.NET Core技术--使用用户密码保护API接口
- asp构建基于SQL Server和ASP的全新应用(sqlserver 和)
- ASP搭配MySQL 配置惊艳不凡(asp连接mysql配置)
- 在asp.net中实现datagridcheckbox全选的方法
- 在ASP.Net中实现flv视频转换的代码
- ASP.NET常用文件上传方法
- asp.net中国身份证号码验证代码非正则
- ASP.NET中等安全模式的一些经验分享
- asp.net数据库连接池浅析
- .Net平台开发实践的一些点滴总结(技术规范与实践精华)
- asp页面和Asp.net页面传中文参数UrlEncode编码以及接收解码
- asp.net下用Aspose.Wordsfor.NET动态生成word文档中的数据表格的方法
- asp.net下使用AjaxPro实现二级联动代码
- ASP.NET中AJAX调用实例代码
- ASP.NET生成树形显示的GridView实现思路
- asp.net导出excel数据的常见方法汇总
- Asp.net中将Word文件转换成HTML的方法