سؤال

أحاول إعادة تثبيت ملف DLL في GAC، ويبدو أن كل شيء يعمل بشكل جيد ولكن يبدو أن تطبيق الويب الذي يصل إليه لا يزال يستخدم التطبيق القديم.

إن ملف DLL القديم هو نفس الإصدار الجديد مع تعديل بسيط فقط، وسيتم استخدامه بواسطة 50 موقعًا مختلفًا، لذا فإن تغيير الإصدار ثم تغيير المرجع في web.config ليس بالأمر السهل جيد حل.

لا تعد إعادة تشغيل خادم IIS أو العملية المنفذة خيارًا نظرًا لوجود 50 موقعًا قيد التشغيل بالفعل ويجب الاستمرار في القيام بذلك.

هل يعرف أحد ما أفعله خطأ أو ما يمكنني القيام به لعلاج هذا الوضع؟

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

المحلول

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

نصائح أخرى

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

المشكلة هي أن الكود قد تم تحميله بالفعل وتحتاج إلى إيجاد طريقة غير تدخلية لإعادة تحميل التطبيق.تعد إعادة تدوير مجموعات التطبيقات طريقة فعالة للقيام بذلك.إذا كنت تستخدم IIS القديم الذي لا يحتوي على تجمعات تطبيقات، فإن تحديث آخر تعديل في المجلدات /bin/ أو ملفات web.config سيؤدي إلى إعادة تحميل التطبيق دون التأثير على المواقع الأخرى.

لذا فإن البرنامج النصي من نوع ما للقيام بما ورد أعلاه هو أمر سليم.كل ما عليه فعله هو تحديث آخر تعديل على مكتبات الارتباط الحيوي (DLL) في كل دليل تطبيق /bin.

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