هل هناك أي ضمانات حول متى يمكن إعادة تدوير IIS أثناء معالجة عملية WCF 1-الطريقة؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

الخلفية

وهذا السؤال هو في جزأين.

ولدي عملية WCF في اتجاه واحد استضافتها في IIS 6. وفيما يلي فهمي لكيفية عمل هذا:

<اقتباس فقرة>   

و_1. IIS يتلقى الطلب.

     

و_2. IIS يرسل HTTP 202 استجابة (شكرا، أنا سوف معالجة ذلك لاحقا).

     

و_3. يدعو IIS بلدي في اتجاه واحد عملية WCF.

والآن السيطرة على ممرات لعملية WCF بلدي الذي يفعل ما يلي:

<اقتباس فقرة>   

و_4. تستمر معلومات طلب إلى مخزن للمعاملات ودائم.

     

و_5. بدء معالجة الطلب في قاعدة البيانات OLTP.

     

و_6. إذا كان هناك خطأ، كرر من الخطوة 5، أو اتخاذ بعض الإجراءات التصحيحية، واستمرت بعد ذلك تنظيف البيانات في الخطوة 4.

سؤال 1

هل أفهم عندما يرسل IIS استجابة HTTP 202 صحيح؟

سؤال 2

إذا بتدوير IIS بين الخطوتين 2 و 4، وأنا قد تفقد معلومات طلب قبل لقد كان التغيير أن تستمر ولكن بعد العميل يعتقد أنني قبلت الرسالة. هل هناك أي ضمانات المقدمة من IIS حول متى أو لن إعادة تدوير عندما تكون هناك الطلبات المعلقة؟


وPS: يرجى عذر التنسيق المراوغة. لسبب ما تم تخفيض السعر الشد تماما عن بلدي عناصر القائمة مرقمة.

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

المحلول

ولست متأكدا من افتراض الخاص بك هو الصحيح.

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

إذا كنت تستخدم wsHttpBinding، على سبيل المثال، من خارج منطقة الجزاء، سترى 2-3 تبادل الرسائل الناتجة في 200 قبل استدعاء الأسلوب الفعلية. هذا هو لتبادل المعلومات الأمنية وتأسيس سياق الأمان.

وباعتراف الجميع، إذا قمت بتكوين الخدمة لديك أي أمن، وهذا لن يحدث وسيعود 202 على الفور، ولكن هذا يشير إلى أن لديها لمعرفة ما إذا كان يمكن القيام بذلك من المكدس WCF.

وكل ذلك جانبا - لست متأكدا ما كنت تحاول تحقيق - التي IIS إعادة التدوير هل إشارة إلى؟ أنا لست في كل خبير في IIS، لكني أشك في ذلك أن إعادة تدوير المضيف بينما شيء يتم تنفيذ بنشاط. إذا كنت في اشارة الى أي شخص restrting تجمع التطبيقات يدويا (أو IIS، أو آلة لهذه المسألة) أشك هناك الكثير يمكنك القيام به.

إذا كان لديك لنعرف على وجه اليقين أن رسالة لا تضيع الطريق الوحيد الذي أعرفه أن guarentee أن هو عن طريق استخدام الرسائل موثوقة بطريقة أو بأخرى، والتي تعترف فقط طلبات استمرت مرة واحدة في مخزن دائم؛

نصائح أخرى

في رأيي، هناك بضعة أشياء أود أن أقترح:

والطريقة الوحيدة التي أعرف لإدارة إعادة التدوير عملية في IIS هو أن ننظر إلى تجمع التطبيقات يستخدم موقع الويب الخاص بك. إذا كنت افتح إدارة IIS -> تجمعات التطبيقات -> اختر بركة الخاص بك، ثم انقر بزر الماوس الأيمن خصائص، على علامة التبويب إعادة تدوير هناك خيارات هناك التي قد تساعدك. انا اعتقد ان هذا لا يضمن أنك لن تخسر الطلبات في المهملات، ولكن وضع وقتا أطول يقلل من احتمال مثل هذه الحالة.

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

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