Después de que Microsoft lanzó .NET y llevó a cabo una promoción y popularización a gran escala, ASP.NET entró gradualmente en la corriente principal del desarrollo de sistemas de información. Pero al mismo tiempo, el antiguo sistema desarrollado con ASP se enfrenta a la integración. En este momento, se enfrenta a un problema: cuando ASP y ASP.NET se integran entre sí, la información de las COOKIES chinas no se puede compartir entre sí. usando ASP.NET para escribir Después de leer la información de las COOKIES chinas usando ASP, lo que se leyó fueron caracteres confusos en lugar de chinos.
Más tarde, después de buscar información y practicar constantemente, finalmente encontré la causa raíz del problema. La razón por la cual la información de las COOKIES chinas no se puede leer correctamente en ASP es que su formato de codificación chino es diferente.
El archivo de configuración Web.config del proyecto de desarrollo contiene la siguiente información:
<!-- Globalización Esta sección establece la configuración de globalización de la aplicación. -->
<globalization requestEncoding="utf-8" ResponseEncoding="utf-8" />
De esto se puede ver que sin una configuración especial del proyecto, la información de las COOKIES chinas en el sistema se transmite a través del método de codificación "utf-8". de forma predeterminada, y la información de las COOKIES chinas en ASP se transmite a través del método de codificación "GB2312" de forma predeterminada, por lo que la información de las COOKIES chinas entre ASP y ASP.NET no se pueden compartir entre sí de forma predeterminada, pero se puede resolver mediante el método. siguientes métodos:
Utilice el siguiente método para escribir COOKIE:
'----------------------------------------- -------- -----------------------
' Nombre: WriteCookie(ByVal strCookieName como cadena, ByVal strKeyName como cadena, ByVal strKeyValue como cadena)
'Parámetros:
'[ByVal] strCookieName - nombre de la cookie
' [ByVal] strKeyName - nombre de clave
'[ByVal] strKeyValue - valor clave.
'Retorno: Cadena
'------------------------------------------------ - --------------
Función pública WriteCookie (ByVal strCookieName como cadena, ByVal strKeyName como cadena, ByVal strKeyValue como cadena) como cadena
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
Función final
El método anterior permite a ASP leer correctamente la información de COOKIES chinas escrita por ASP.NET, pero al mismo tiempo, si la información de COOKIES chinas leída en ASP.NET se muestra directamente en la recepción, se mostrará confusa. Esto se debe a que ASP.NET utiliza la codificación "utf-8" para mostrar información en chino en codificación "GB2312", puede utilizar el siguiente método para mostrar correctamente la información en chino en la página principal:
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)
El método anterior resuelve el problema de que la información de las COOKIES chinas no se puede compartir entre ASP y ASP.NET. Sin embargo, me pregunto si se puede modificar modificando el método de codificación en el. Archivo de configuración Web.config, cambiar el método de codificación "utf-8" al método de codificación "GB2312" puede resolver el problema anterior. Debería ser posible probarlo y decirme el resultado.
En ASP.NET generalmente borramos la información de COOKIES mediante los siguientes métodos:
Sub CleanCookies()
Atenuar i como entero
Cookie atenuada como System.Web.HttpCookie
Para i = 0 A System.Web.HttpContext.Current.Request.Cookies.Count - 1
cookie = System.Web.HttpContext.Current.Request.Cookies(i)
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Nombre)).Value = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
Próximo
End Sub
Pero cuando borre la información de las COOKIES a través del método anterior e inicie sesión nuevamente, ASP no podrá leer las COOKIES de ASP.NET. Sin embargo, se desconoce el motivo, agregando la siguiente declaración al método anterior para borrar las COOKIES. La información puede resolver el problema de no poder borrar correctamente la información de las COOKIES. Pregunta:
System.Web.HttpContext.Current.Response.Cookies.Clear()
Lo anterior es un resumen de algunas de mis experiencias en el trabajo. .Espero que me corrijas!