将List <t>作为参数传递给WCF服务操作</t>

时间:2012-08-19 18:01:52

标签: wcf list

我有一个WCF操作合同,如下所示:

public void SavePersons(List<Person> list, bool IsSelected)
{
}

我在客户端传递了一个强类型的Person对象列表(List<Person>)。但是,在调用服务时,我收到一条错误的请求400消息。我究竟做错了什么?

2 个答案:

答案 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)

在我的客户端应用程序中,在配置/更新服务时,我按照以下步骤操作:

  • 添加/更新网址
  • 在“数据类型”下(在“高级”中),选择选项,集合类型:System.Collection.Generic.List

最后,我创建了一个列表,并在客户端中添加了如下代码:

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服务将数据作为列表发送。