WCF休息多个DataContracts包装

时间:2010-06-25 15:35:45

标签: rest wcf datacontract webhttp

所以我使用Rest WebHttp调用wcf webservice。我还设置了第二个绑定mex进行测试。我的方法正在运行,但是当我尝试通过客户端应用程序通过fiddler或直接httppost进行测试时,我收到400 Bad request错误。我正在将多个datacontracts传递给该方法。它迫使我使用包裹的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>

1 个答案:

答案 0 :(得分:1)

我担心你会挣扎于此。首先,您缺少DataContract序列化命名空间。 DataContractSerializer非常挑剔它希望如何形成xml。

有一个问题只是recently来自某人试图做一些更简单的事情,他很难让WCF接受它。

Here解释了如何格式化包装参数。