أفضل طريقة لدعم "/ س urlencoded-شبكة الاتصالات العالمية شكل تطبيق" بيانات آخر مع WCF؟

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

سؤال

وأنا بناء خدمة WCF على أساس مواصفات W3C التي تعرف مريحة نقطة نهاية الخدمة على شبكة الإنترنت أن يقبل البيانات وظيفة "التطبيق / x-شبكة الاتصالات العالمية urlencoded شكل". WCF لا يدعم هذا النوع من ترميز الرسالة بشكل افتراضي ولقد وجدت عددا من الأمثلة المختلفة لخلق العقد الذي يبدو مثل هذا:

XElement Query_Post(Stream postData);

وبعد ذلك في إطار تنفيذ فك رموز تيار postData باستخدام طريقة HttpUtility.ParseQueryString.

لا أحد يعرف من طريقة كتابتها أكثر بقوة بدعم "التطبيق / x-شبكة الاتصالات العالمية شكل urlencoded" في WCF؟

وأود عقد عملية جهدي لتكون:

XElement Query_Post(string query, string [] params);
هل كانت مفيدة؟

المحلول

وأفضل طريقة هي استخدام Stream مثل <وأ href = "http://blogs.southworks.net/erossetto/2007/09/03/raw-http-post-with-wcf/" يختلط = "noreferrer" > الخام HTTP POST مع WCF أو ما تقوله. والسبب هو لأن WCF خلاصات كل مستوى الاتصالات الاشياء التخطيط الفعلي الخروج من رمز الخدمة. من الناحية المثالية، هل تريد أن تجعل من الخدمة التي يمكن أن تتحول إلى SOAP أو REST فقط عن طريق التقليب التبديل.

لتقديم الدعم لها أصلا، ربما لديك لتوسيع WebHttpBinding أو جعل بنفسك ملزمة وتنفيذ <وأ href = "http://msdn.microsoft.com/en-us/library/ms751486.aspx" يختلط = "noreferrer "> التشفير مخصصة . هذا هو متماثل إلى إخراج مثل هذا المنصب مرتبط يقول. عليك أن تطور أسلحتها للحصول على تمويل رأس المال العامل لإخراج غير XML / JSON الاشياء.

نصائح أخرى

والمكتبة WCF REST Contrib تمكن هذه الوظيفة:

https://github.com/mikeobrien/WcfRestContrib

وويتضمن المنسق POX وشكل رابط المشفرة المنسق ويسمح لك بسهولة إنشاء الخاصة بك. يتم تعيين منسقات لأنواع التمثيل الصامت وتلقائيا اختيار تسلسل / إلغاء تسلسل نص الكيان القائم على نوع المحتوى، واستعرض رؤوس.

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