كيفية إضافة مرجع خدمة إلى عميل WCF لخدمة ويب تتطلب شهادة مصادقة العميل

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

سؤال

الحذر، تنبيه Noobie WCF

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

لدي WSDL للخدمة، وتشغيل svcutil.exe على ذلك، لكنني لست متأكدا من كيفية المتابعة من هناك.

شكرا على اي مساعدة!

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

المحلول

أفترض أن الخدمة التي تستخدمها هي أداء مصادقة العميل SSL.

نظرا لأن إضافة مرجع الخدمة فشل، يمكنك استخدام svcutil. ل قم بإنشاء العميل من ملف WSDL التي تملكها. أعتقد أن بناء الجملة سيكون مثل:

svcutil *.wsdl /l:C# /out:Reference.cs /config /s /ct:System.Collections.Generic.List`1 /ser:Auto /tcv:Version35 /n:*,<NameOfYourNamespaceHere> /edb

سيؤدي ذلك إلى إنشاء ملف، مرجع .CS، يحتوي على فئات الوكيل على الخدمة (يمكنك إعطاء هذا الملف مهما اسم تريده). أضف هذا الملف إلى مشروعك. سيتم أيضا إنشاء ملف التكوين والإخراج .config. يمكنك إضافة هذا التكوين إلى تكوين التطبيق الخاص بك بدلا من كتابة كل شيء باليد.

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

حظ سعيد.

نصائح أخرى

أعلم أن هذا هو السؤال القديم وقد تم حله بالفعل ولكن أود أن أذكر أن إضافة مرجع الخدمة يعمل أيضا لملفات WSDL المخزنة على القرص. وقد ذكر مارك أيضا ذلك. يقبل إضافة مربع حوار مرجع الخدمة:

  • عنوان URL إلى WSDL.
  • عنوان URL إلى نقطة النهاية تبادل البيانات الوصفية
  • عنوان URL للخدمة حيث يتم إضافة / ميكس داخليا
  • أي مسار ملف إلى ملف WSDL

لذلك إذا كان لديك WSDL وكلها تحتاج إلى ملفات XSD يمكنك استخدام إضافة مرجع خدمة أيضا. الجزء الصعب الوحيد هو أن إضافة مربع حوار مرجع الخدمة لا يحتوي على استعراض الزر وهذا هو السبب في أن هذه الوظيفة غير معروفة جيدا.

سؤال غبي (ربما): هل يمكنك الاتصال بنقطة خدمة الخدمة، وتقديمها بأوراق اعتمادك المخزنة في الشهادة، ثم قم بتنزيل WSDL (وربما XSD) من هناك؟ أو هل يمكن أن يكون الكيان الذي يوفر هذه الخدمة سيكون قادرا على إرسال هذه الملفات (أو جعلها متوفرة للتنزيل)؟

بمجرد حصولك على ملف WSDL (و XSD) على القرص، يجب أن يكون سهلا بما يكفي لإنشاء عميل WCF لهذا (باستخدام إما svcutil.exe أو Add Service Reference) بناء على تلك الملفات، ثم تكوين الأمان المناسب لذلك.

مجرد فكرة .... (بقيمة 0.02 دولار؟)

مارك

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