يقوم الاستثناء في خدمة الويب بتأمين DLL ويمنع النشر.الحل البديل؟

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

سؤال

أنا أستخدم ملف DLL أصلي (FastImage.dll) في خدمة ويب C# ASP.NET والذي يتم قفله أحيانًا (لا يمكن حذفه --- يقول تم رفض الوصول)؛وهذا يتطلب إيقاف IIS لحذف DLL.إن عدم القدرة على حذف ملف DLL هذا الموجود في مجلد bin الخاص بخدمة الويب المنشورة الخاصة بي يمنعني من النشر بنجاح (على الرغم من أنه يعتقد أنه تم نشره بنجاح!) قد لا تنعكس التغييرات على الخادم!).لاحظ أن الخطأ الذي يتسبب في قصف خدمة الويب لملف DLL وإغلاقه موجود في الكود الخاص بي، وهو خارج ملف DLL المذكور، لذلك أعتقد أن هذه مشكلة عامة أكثر من مجرد مكتبة FreeImage (عدم جلب أي حرارة لهم).

  1. وقد شهدت أي شخص هذا؟
  2. هل هناك طريقة للتأكد من أنه عندما تقول "تم النشر بنجاح" من VS IDE فإن ذلك يعني ذلك بالفعل، أو لتشغيل نوع من البرنامج النصي للتحقق من حذف الملفات بالفعل قبل محاولة النشر (مثل البناء المسبق خطوة في VC++).(في الوقت الحالي، أقوم بحذف الملفات يدويًا قبل النشر للتأكد من أنني أعلم أنه تم استبدال ملفات DLL، بدلاً من تشغيل ملفات DLL القديمة.لا تزال هناك مشكلة، على الرغم من عدم تمكني من حذف ملف DLL.)
  3. كيف يمكنني اكتشاف ما إذا كان الملف قد تم حذفه بنجاح من ملف دفعي؟(حتى أتمكن من إيقاف وبدء تشغيل IIS إذا فشل)
  4. هل من الممكن إيقاف وبدء تشغيل IIS من برنامج نصي (ويفضل أن يكون من النشر...العمل في VS IDE) وإذا كان الأمر كذلك، كيف؟
هل كانت مفيدة؟

المحلول

سيؤدي استخدام أداة سطر الأوامر IISReset إلى إعادة تشغيل IIS على الجهاز المحلي فقط، وليس على خادم بعيد تقوم بالنشر عليه.

بافتراض أنك تقوم بالنشر على خادم Windows 2003، فإنني أقترح تجربة الخطوة الأقل جذرية قليلاً وهي إيقاف IIS AppPool وإعادة تشغيله في موقع الويب أو المجلد الظاهري الذي يتم تشغيل خدمة الويب فيه.(بهذه الطريقة لا تأخذ جميع المواقع التي تعمل على الخادم الهدف في وضع عدم الاتصال.) ويفترض هذا أيضًا أن خدمة الويب تعمل في تجمع التطبيقات الخاص بها.من الناحية المثالية ينبغي أن يكون كذلك، لذلك عليك أن تبقيه معزولا.

أوصي بالابتعاد عن استخدام عملية النشر والنظر في استخدام مشروع نشر الويب.فيما يلي تفاصيل المنشور على مدونة ScottGu VS 2005 مشاريع نشر الويب.

تتمثل ميزة أسلوب مشروع نشر الويب في أنه يزودك بكل قوة وإمكانات MSbuild، حيث إنه في الحقيقة مجرد برنامج ملائم حول MSBuild.إليك مشاركة من فريق MSBuild حول قدرات ما قبل البناء وما بعد البناء

أتمنى أن يساعدك هذا.

نصائح أخرى

يمكنك استخدام أداة سطر الأوامر IISReset لإيقاف/إعادة تشغيل iis.لذلك يمكنك كتابة ملف دفعي بسيط لإيقاف iis، ونسخ ملفاتك، ثم إعادة تشغيل iis.لست متأكدًا من كيفية دمج هذا مع ميزة النشر VS.

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