0

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

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

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

4

2 回答 2

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
{
    ...
}
于 2012-08-19T18:21:48.393 回答
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 服务将数据作为列表发送。

于 2016-05-20T20:43:32.900 回答