Завершение WCF для нескольких DataContracts - PullRequest
0 голосов
/ 25 июня 2010

Итак, я вызываю веб-службу wcf, используя Rest WebHttp.Я также установил второй обязательный мекс для тестирования.Мой метод работает, но когда я пытаюсь протестировать через fiddler или через httppost через клиентское приложение, я получаю ошибку 400 Bad request.Я передаю несколько контрактов данных в метод.Это заставляет меня использовать BodyStyle of wrapped, но я не знаю, как отформатировать мой xml для теста.Я создал тестовый метод, чтобы попробовать это и ту же ошибку.Вот мой код: все мои другие методы работают с одним датаконтрактом, но этот, где у меня есть два, - нет.Я считаю, что проблема в 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>

1 Ответ

1 голос
/ 25 июня 2010

Боюсь, вы собираетесь бороться с этим. Во-первых, вам не хватает пространств имен сериализации DataContract. DataContractSerializer довольно требователен к тому, как он хочет, чтобы он форматировал xml.

Недавно был задан вопрос от кого-то, кто пытался сделать что-то гораздо более простое, и ему было трудно заставить WCF принять его.

Здесь - объяснение того, как форматировать упакованные параметры.

...