الافتراضي لعناوين URL المختلفة عند إنشاء وكيل خدمة الويب باستخدام WSDL.exe

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدي العديد من خدمات الويب في مشروعي والتي تشترك في الأنواع.

من أجل البساطة، سأوضح ذلك باستخدام خدمتي ويب.

خدمة الويب1 في http://MyServer/WebService.asmxwebService2 في http://MyServer/WebService.asmx

عندما أقوم بإنشاء الوكيل لهاتين الخدمتين أستخدم:

wsdl /sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx/appsettingurlkey:WebServiceUrl /namespace:MyNamespace /out:MyProxy.cs

المشكلة هي أن AppSettingUrlkey هو نفسه لكل خدمة ويب في ملف الوكيل.أريد أن أكون قادرًا على تحديد معلمات appsettingurlkey متعددة.كيف يتم تحقيق ذلك؟أنا رقم منذ أن أصبحت معلمة /sharetypes متاحة ، يجب أن يكون هناك حل لتحديد AppSettingUrlkey خصيصًا لكل خدمة ويب تم تحديدها.

إذا لم يكن هذا ممكنًا مع wsdl.exe، فماذا تقترح أن أفعل؟أفضل عدم تحديث التعليمات البرمجية التي تم إنشاؤها والتي يخرجها wsdl.exe ولا أرغب في الاطلاع على تطبيقي بالكامل لتمرير عنوان URL إلى كل مثيل من خدمات الويب.

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

المحلول

فئات الوكيل التي تم إنشاؤها هي فئات جزئية، لذا فإن الحل الذي أقترحه هو إضافة المُنشئ الخاص بك في ملف تعليمات برمجية مختلف (غير مُنشأ)، والذي يقرأ بوضوح إعدادًا مختلفًا لكل وكيل.

نصائح أخرى

لتكملة إجابة إيليا، إليك إجابة البريد الإلكتروني التي قدمتها له.

اضطررت إلى تدوينه لأن ملف XML لم يتم لصقه جيدًا في مربع النص هذا: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

آه، بدلاً من إنشاء فئة جزئية أخرى مع مُنشئ محمّل بشكل زائد يمرر في عنوان URL، فإن المعلمات الإضافية التالية إلى wsdl.exe ستحل مشكلتي...

wsdl /sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx /appsettingurlkey:WebServiceUrl /namespace:MyNamespace /out:MyProxy.cs /appsettingurlkey:BaseSoapUrl /appsettingbaseurl:http://MyServer/

إذا كان web.config يحتوي على إعداد تطبيق BaseSoapUrl، فسوف يستخدمه لاستبدال ملف http://MyServer/ سلسلة فرعية من MyProxy.cs.إذا لم يكن appSetting موجودًا، فسوف يستخدم فقط المسار المتوفر في wsdl.exe (مثال:{BaseSoapUrl}/WebService1.asmx عند استخدام appSetting أو http://MyServer/WebService1.asmx عند عدم استخدام appSetting).

أتوجه بالشكر إلى ريك كيرنر لتوجيهي في الاتجاه الصحيح.

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