سؤال

لذلك أنا أدعو خدمة WCF WebService باستخدام REST Webhttp. لقد قمت أيضًا بإعداد MEX ملزمة ثانية للاختبار. تعمل طريقتي ، لكن عندما أحاول الاختبار من خلال Fiddler أو HTTPPOST المستقيم من خلال تطبيق عميل ، أحصل على خطأ في طلب 400 سيء. أقوم بتمرير متعددة DataContract إلى هذه الطريقة. إنه يجبرني على استخدام BodyStyle من ملفوفة ولكني لا أعرف كيفية تنسيق XML الخاص بي للاختبار. لقد قمت بإنشاء طريقة اختبار لتجربة هذا الخطأ والخطأ نفسه. إليكم الكود الخاص بي: كل أساليب أخرى تعمل مع DataContract واحد ولكن هذا الذي لديّ اثنان لا. أعتقد أن المشكلة موجودة في XML في أسفل هذا المنشور ، يجب أن تكون ملفوفة لكنني لا أعرف كيفية لفه.

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)]
string Test(wsAuth a, wsMed m);

[DataContract(Namespace = "")]
public class wsMed
{
 [DataMember]
 public string Test{ get; set; }
}

[DataContract(Namespace = "")]
public class wsAuth
{
 [DataMember]
 public string UserName { get; set; }
 [DataMember]
        public string Password { get; set; }
 [DataMember]
 public string DeviceId { get; set; }
}

XML الخاص بي الذي أستخدمه

<Test>
<wsAuth>
 <DeviceId>jenglish</DeviceId>
 <Password>treetop</Password>
 <UserName>jenglish</UserName>
</wsAuth>
<wsMed>
 <Test></Test>
</wsMed>
</Test>

لا يوجد حل صحيح

نصائح أخرى

أخشى أنك ستصارع مع هذا. أولاً ، أنت تفتقد مساحات أسماء التسلسل DataContract. DatacontractSerializer هو صعب الإرضاء حول كيف يريد تشكيل XML.

كان هناك سؤال فقط حديثاً من شخص يحاول القيام بشيء أكثر بساطة وكان يواجه صعوبة في الحصول على WCF لقبوله.

هنا هو شرح لكيفية تنسيق المعلمات ملفوفة.

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