بعد أن أطلقت Microsoft .NET ونفذت ترويجًا ونشرًا على نطاق واسع، دخلت ASP.NET تدريجيًا في الاتجاه السائد لتطوير نظام المعلومات. ولكن في الوقت نفسه، يواجه النظام القديم الذي تم تطويره باستخدام ASP مشكلة التكامل في الوقت الحالي: عندما يتم دمج ASP وASP.NET مع بعضهما البعض، لا يمكن مشاركة معلومات ملفات تعريف الارتباط الصينية مع بعضهما البعض استخدام ASP.NET للكتابة بعد قراءة معلومات ملفات تعريف الارتباط الصينية باستخدام ASP، كان ما تمت قراءته عبارة عن أحرف مشوهة بدلاً من الأحرف الصينية.
لاحقًا، بعد البحث عن المعلومات والتدريب المستمر، وجدت أخيرًا السبب الجذري للمشكلة. السبب وراء عدم إمكانية قراءة معلومات ملفات تعريف الارتباط الصينية بشكل صحيح في ASP هو أن تنسيق الترميز الصيني مختلف.
يحتوي ملف تكوين Web.config لمشروع التطوير على المعلومات التالية:
<!-- العولمة يقوم هذا القسم بتعيين إعدادات العولمة الخاصة بالتطبيق. -->
<globalization requestEncoding="utf-8" ResponseEncoding="utf-8" />
يمكن ملاحظة أنه بدون تكوين خاص للمشروع، يتم نقل معلومات ملفات تعريف الارتباط الصينية في النظام من خلال طريقة التشفير "utf-8" بشكل افتراضي، ويتم إرسال معلومات ملفات تعريف الارتباط الصينية في ASP من خلال طريقة التشفير "GB2312" بشكل افتراضي، لذلك لا يمكن مشاركة معلومات ملفات تعريف الارتباط الصينية بين ASP وASP.NET بشكل افتراضي، ولكن يمكن حلها عن طريق. الطرق التالية:
استخدم الطريقة التالية لكتابة ملف تعريف الارتباط:
'----------------------------------------- -------- -----------------------
الاسم: WriteCookie (ByVal strCookieName كسلسلة، ByVal strKeyName كسلسلة، ByVal strKeyValue كسلسلة)
'حدود:
'[ByVal] strCookieName - اسم ملف تعريف الارتباط
'[ByVal] strKeyName - اسم المفتاح
'[ByVal] strKeyValue - قيمة المفتاح.
"الإرجاع: سلسلة
'------------------------------------------------ - --------------
الوظيفة العامة WriteCookie (ByVal strCookieName كسلسلة، ByVal strKeyName كسلسلة، ByVal strKeyValue كسلسلة) كسلسلة
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
وظيفة النهاية
تتيح الطريقة المذكورة أعلاه لـ ASP قراءة معلومات ملفات تعريف الارتباط الصينية المكتوبة بواسطة ASP.NET بشكل صحيح، ولكن في الوقت نفسه، إذا تم عرض معلومات ملفات تعريف الارتباط الصينية المقروءة في ASP.NET مباشرة في مكتب الاستقبال، فسيتم عرضها على أنها مشوهة نظرًا لأن ASP.NET يستخدم ترميز "utf-8" لعرض المعلومات الصينية بترميز "GB2312"، تحدث مشكلة، يمكنك استخدام الطريقة التالية لعرض المعلومات الصينية بشكل صحيح على الصفحة الأولى:
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)
تحل الطريقة المذكورة أعلاه مشكلة عدم إمكانية مشاركة معلومات ملفات تعريف الارتباط الصينية بين ASP وASP.NET، ومع ذلك، أتساءل عما إذا كان من الممكن تعديلها عن طريق تعديل طريقة التشفير في ملف يمكن أن يؤدي تغيير طريقة التشفير "utf-8" إلى طريقة التشفير "GB2312" إلى حل المشكلة المذكورة أعلاه. يمكنك تجربتها وإخباري بالنتيجة.
في ASP.NET نقوم بشكل عام بمسح معلومات ملفات تعريف الارتباط من خلال الطرق التالية:
Sub CleanCookies()
خافت ط كعدد صحيح
قم بإخفاء ملف تعريف الارتباط كـ System.Web.HttpCookie
لأني = 0 إلى System.Web.HttpContext.Current.Request.Cookies.Count - 1
ملف تعريف الارتباط = 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)
التالي
End Sub
ولكن عند مسح معلومات ملفات تعريف الارتباط من خلال الطريقة المذكورة أعلاه وتسجيل الدخول مرة أخرى، لن يتمكن ASP من قراءة ملفات تعريف الارتباط الخاصة بـ ASP.NET والسبب غير معروف، ومع ذلك، قم بإضافة العبارة التالية إلى الطريقة المذكورة أعلاه لمسح ملفات تعريف الارتباط المعلومات يمكن أن تحل مشكلة عدم القدرة على مسح معلومات ملفات تعريف الارتباط بشكل صحيح:
System.Web.HttpContext.Current.Response.Cookies.Clear()
ما ورد أعلاه هو ملخص لبعض تجاربي في العمل وآمل أن تصحح لي!