我有一个WCF操作合同,如下所示:
public void SavePersons(List<Person> list, bool IsSelected)
{
}
我在客户端传递了一个强类型的Person
对象列表(List<Person>
)。但是,在调用服务时,我收到一条错误的请求400消息。我究竟做错了什么?
答案 0 :(得分:2)
我建议您创建一个合同来封装参数,如下所示:
public void SavePersons(PersonCollectionContract Request)
{
...
}
[DataContract]
public class PersonCollectionContract
{
[DataContract]
public List<Person> People { get; set; }
[DataContract]
public bool IsSelected { get; set; }
}
[DataContract]
public class Person
{
...
}
答案 1 :(得分:0)
我在将List<Health>
类Health类型作为参数传递给wcf服务方法时遇到了类似的问题。我在wcf服务中创建了一个数据契约,如下所示:
[DataContract]
public class Health
{
...
}
在wcf服务类中定义了一个方法,例如:
public string GetData(List<Health> healthValues)
在我的客户端应用程序中,在配置/更新服务时,我按照以下步骤操作:
最后,我创建了一个列表,并在客户端中添加了如下代码:
List<WcfService.Health> listHealth = new List<WcfService.Health>();
WcfService.Health h = new WcfService.Health();
.
.
listHealth.Add(h);
WcfService.Service1Client s = new WcfService.Service1Client();
string str = s.GetData(listHealth);
这解决了我的目的,我能够通过wcf服务将数据作为列表发送。