خادم حالة جلسة ASP.NET - حفظ البيانات غير التسلسلية

StackOverflow https://stackoverflow.com/questions/243110

  •  04-07-2019
  •  | 
  •  

سؤال

كما تعلم، في ASP.NET، يمكنك تخزين بيانات الجلسة في أحد الأوضاع الثلاثة التالية:

  • InProc
  • حالة الجلسة
  • خادم قاعدة البيانات

بالنسبة لوضع InProc، يمكنك تخزين أي نوع من كائنات البيانات حتى لو كانت غير قابلة للتسلسل.ومع ذلك، في وضعي حالة الجلسة وSQL Server، يمكنك فقط تخزين البيانات المتسلسلة.

في مشروعي، لدي بوابة جاهزة تستخدم وضع "InProc" لتخزين جلستها.أحتاج إلى استخدام حالة الجلسة بدلاً من ذلك بسبب بعض مشكلات قابلية التوسع ومعالجة الفشل.

المشكلة هي أن هذه البوابة تقوم بتخزين الكائنات غير التسلسلية داخليًا في سياق الجلسة (أي أن الكائنات المخزنة لا تنفذ واجهة ISerializable).ليس لدي إمكانية الوصول إلى الكود الخاص بهم.هل هناك أي حل حتى أتمكن من تخزين كائنات الجلسة في State Server دون تغيير التعليمات البرمجية الخاصة بها.لا يزال بإمكاني الوصول إلى ملف web.config الخاص بهم إذا كان هذا سيساعد بأي شكل من الأشكال.

هل كانت مفيدة؟

المحلول

AFAIK، الجواب البسيط هو لا.إذا كنت لا تمانع في تغيير التعليمات البرمجية الخاصة بك، فيمكنك إدخال كائن مجمّع بين الكائن الفعلي والكائن الخاص بك، وجعل المجمّع الخاص بك يتعامل مع إجراء تسلسل للكائن الملتف (بشكل أساسي كبديل للتسلسل) - ولكن بحلول ذلك الوقت سيكون من الأسهل تقريبًا فقط قم بإعادة كتابة الكود...

أي نوع من الكائنات هم؟عادةً ما تكون كائنات حالة الجلسة عبارة عن فئات بيانات بسيطة، لذا لا ينبغي أن يكون هناك الكثير من المشكلات في إجراء تسلسل لها؟

نصائح أخرى

ينشئ التسلسل تمثيلاً للكائن الذي يمكن تخزينه وقراءته لإعادة إنشاء حالة الكائن.

إذا كان الكائن يحتوي فقط على أنواع القيم، فقد لا تحتاج إلى تطبيق ISerializable، ولكنك تحتاج فقط إلى السمة [Serializable].

لجعل هذا الرد أكثر فائدة أو مباشرًا للسؤال المطروح:

لا يمكنك إجراء تسلسل لكائن لم يتم حذفه بطريقة ما باعتباره قابلاً للتسلسل.أي طريقة عامة أخرى لإعادة إنشاء كائن قد تؤدي إلى عدم حصول الكائن على نفس الحالة التي كان عليها قبل أن يتم "تسلسله".

كما ذكر مارك، يمكنك القيام بذلك عن طريق إنشاء "غلاف" خاص بك قابل للتسلسل، ولكنك ستحتاج إلى أن تكون أكثر دراية بالكائن المعني، وسيحتاج الكائن إلى طرق تسمح بإعادة إنشائه في بطريقة مماثلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top