سؤال

لدي مثيل واحد من تطبيق ويب متصل بقواعد بيانات متعددة.بناء على اسم المجال (على سبيل المثال www.shop1.com, www.shop2.com, ..) أقوم بتبديل سلسلة الاتصال في إطار الكيان.

shop1.com -> Database1

shop2.com -> Database2

shop3.com -> Database3

حتى الآن جيد جدا.

أنا أيضا باستخدام سكل سيرفر حالة الجلسة وأريد تبديل قاعدة بيانات حالة الجلسة تماما كما أقوم بتبديل قاعدة البيانات لبياناتي.

shop1.com -> SessionStateDatabase1

shop2.com -> SessionStateDatabase2

shop3.com -> SessionStateDatabase3

شكرا مقدما لمساعدتكم.


مزيد من المعلومات إذا كنت تريد أن تعرف لماذا أفعل هذا:

في الواقع أنا تنفيذ متعددة الإيجار.يوضح الوصف أعلاه ثلاثة مواقع.في الواقع ، لدي أكثر من 50.وعدد من المواقع سوف تنمو في الأشهر القليلة المقبلة.في الوقت الحالي ، يتم نشر جميع المواقع بشكل منفصل مما يعني أنه كلما اضطررت إلى طرح تصحيح أو تحديث ، أقوم بنشر جميع المواقع الـ 50.أصبح الحفاظ على المواقع بهذه الطريقة كابوسا.لذلك كنت أفكر في وضع 5 إلى 10 مواقع على مثيل واحد ، اعتمادا على استخدامها ، بحيث يكون لدي عدد أقل من الحالات للحفاظ عليها.

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

المحلول

في مثل هذه الحالات ، أنظر دائما إلى الكود المصدري للإطار.أولا أجد حيث يخزن التكوين سلسلة اتصال حالة الجلسة ، ثم أجد حيث يتم استخدامه.الطبقة الخاصة System.Web.SessionState.SqlSessionState.SqlSessionStateStore لديه طريقة OneTimeInit(), ، حيث يقرأ سلسلة الاتصال.هنا لاحظت أن هناك دعما لبارتينيونغ ، انظر هنا: http://msdn.microsoft.com/en-us/library/aa478952.aspx .لم أسمع بهذا من قبل ، ولكن يبدو أنه يفعل ما تريده بالضبط ، يمكنك تخزين حالة الجلسة في قواعد بيانات متعددة ، بناء على أي نوع من المعايير التي تريدها.+ 1 بالنسبة للسؤال بالمناسبة ، هذه ميزة رائعة.أيضا ، إذا كان لا يعمل بها ، يمكنك محاولة تنفيذ سيسيونستاتيستوريبروفيدرباس الخاصة بك ، وهو تجاوز علنا.

نصائح أخرى

نظرا لأن اتصال حالة الجلسة لا يديره الكود الخاص بك، فلن يكون من الممكن بالنسبة لك تبديله.إنه تكوين مستوى التطبيق والتحكم الموجود في الكود.ولكن الحاجة إلى هذا لا ينبغي أن تنشأ.سيتمكن خادم واحد من إدارة حالة الجلسة لجميع المجالات الثلاثة التي لديك.الاهتمام الوحيد ربما عندما يتحرك المستخدم من Shop1.com إلى Shop2.com وما زال يحتفظ بالجلسة القديمة.

هل هناك بعض الأسباب التي لن تفكر في تشغيل (أفترض، نفس الكود) كثلاث تطبيقات ويب منفصلة؟

  • خطأ واحد لا يؤدي إلى أسفل المواقع الثلاثة
  • حالة الدورة مفصولة حسب الطلب
  • يسمح ل Li> بتخصيص مواقع قدرة الحجم إلى أنظمة مختلفة لأن النمو يملي
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top