فشلت خدمة WCF في المصادقة على الخادم 2012 ولكن موافق في WIN7؟

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

سؤال

قد أنشأت خدمة WCF مع مصادقة قاعدة الدور والترخيص. وتنفيذ كل عملية مثل

giveacodicetagpre.

مزود العضوية و Rolemanager هي تلك الخاصة بحيازة MySQL، وليس في GAC. يتم إنشاء شهادات SSL بواسطة IIS 7 ل HTTPS.

ولدي بعض اختبارات التكامل مثل

giveacodicetagpre.

مثيل واحد يعمل على جهاز Dev الخاص بي من Win7، والآخر موجود في خادم اختبار للخادم 2012. وكانت كلا مثيلات خدمة WCF تعمل بشكل جيد.

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

تحديث:

giveacodicetagpre.

تحديث:

لاحظت ما يلي واستبعد بعض الأسباب المحتملة.

  1. قواعد بيانات المصادقة على كلا الجهازين متطابقين، ويمكنني أن أرى خدمة WCF تجعل استعلامات SQL لاسترداد معلومات الأعضاء بعد قيام العميل بطلب طلب.
  2. قد قارنت ربط IIS وإعدادات IIS، وكذلك Web.config على كلا الجهازين، مماثلة بشكل أساسي باستثناء بعض العناوين.
  3. عارض الأحداث لا تظهر أي تحذير حول خدمة WCF.
  4. تم تزيين تنفيذ خدمة WCF بواسطة هذا يعزى: Class Class ErrorhandlylerbehaviorTiorTribeTrIpute هذه المسألة.
  5. وقد قارنت التجميعات المحملة في كلتا الحالتين. في نظام التشغيل Windows 7، تكون تجميعات النظام أساسا من Windows \ Microsoft.NET \ XXX، ولكن في الخادم 2012، بعض التجميعات هي من Windows \ Assembly \ Nativeimages_v4.0.30319_64، إليك بعض الجمعيات الموجودة في Nativeimages:

    giveacodicetagpre.

    على النقيض من ذلك، في Win 7، النظام الوحيد هو من Nativeimages. لست متأكدا مما إذا كان يمكن أن يغير موقع التجميعات أو الصور الأصلية السلوكيات.

    يتم تطوير الخدمات والعملاء باستخدام VS 2012 على .NET Framework 4.5.

    ماذا يمكن أن يجعل المثيل على الخادم 2012 تفشل؟

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

المحلول

مشاكل حلها.

جذر الأسباب: مفقود ASP .NET MVC تجميعات في Server 2012.

الخلفية، أريد أن مشاركة خدمة WCF لمشاركة قاعدة بيانات المصادقة نفسها مع تطبيق تطبيقات MVC في المستقبل. لذلك فإن موفر العضو ومدير المصادقة هي تلك الموجودة من MVC، وقاعدة البيانات هي MySQL، وبالتالي فإن مقدمي الخدمات من مكونات طرفي مفتوح المصدر الذي يقترن مع MVC.

الأسباب التي تجعل معالج الاستثناء الذي لا يجعله عارض الأحداث لا يمكن أن يصطاد التحذيرات حول التجميعات المفقودة هي: 1. تم استخدام الكمبيوتر ديف من قبل مطور مسبق أحب GAC. أنت تعرف GAC قد تسبب مشاكل كبيرة في جهاز كمبيوتر ديف. طن من الجمعية من MVC 1،2، و 3 كانت في GAC. 2. يتفاعل المكون الثالث مع MVC بعض ممارسة البرمجة الفقيرة في مكان ما تبتلع بعض الاستثناءات حول الجمعيات المفقودة.

بعد مقارنة التجمعات المحملة واحدة تلو الأخرى في كلا الجهازين، وجدت أن مثيل خدمة WCF على الخادم 2012 لم يكن لديه webmatrix.webdata.dll. بعد نسخ الجمعية إلى دليل Bin Directory من الدليل الظاهري، حصلت على سلسلة من رسائل الخطأ حول التجميعات المفقودة أكثر بعد نسخ التجميعات المفقودة التي أبلغت عنها واحدا تلو الآخر. هذه التجمعات تنتمي أساسا إلى MVC. ظهرت رسائل الخطأ على جانب العميل في الاستجابة من الخدمة في HTML، بالإضافة إلى عارض الأحداث في جانب الخادم.

لذلك أنا الآن ضمان نصوص النشر لتشمل التجميعات المعنية.

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

الدرس هو: 1. لا gac في آلة ديف. إذا ورثت آلة ديف من شخص ما، فمن الأفضل أن تستثمر في وقت ما لبعضها لبعض الأجهزة التي كان ينبغي أن تكون جمعية خاصة من خلال Xcopy. 2. قد تحتوي بعض مكونات الطرف الثالث على بعض الممارسة القذرة ضد البرمجة الدفاعية. في حالتي، ابتلع المكون التحذيرات حول الجمعيات المفقودة. 3. أرخص مقارنة المجالس المحملة قبل التحقيق في الأسباب المحتملة الأخرى. يمكنني استخدام Process Explorer إلى قائمة التجمعات المحملة في W3WP.exe.

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