【问题标题】:How to send list of objects to WCF service?如何将对象列表发送到 WCF 服务?
【发布时间】:2011-11-22 19:28:42
【问题描述】:

我正在构建 WCF 服务,我想接受 List 作为我的方法之一的参数。

这是我的代码:

[ServiceContract]
public interface IProductService
{
    [OperationContract]
    int InsertProducts(List<Product> products);
}

[DataContract]
[KnownType(typeof(List<Product>))]
public class Product
{
    [DataMember]
    public int ProductId{ get; set; }

    [DataMember]
    public string ProductName{ get; set; }

    [DataMember]
    public List<Product> Products { get; set; }
}

当我运行服务时,它给了我一个错误。

WCF 不支持此操作,因为它使用NameSpace.Product[]

【问题讨论】:

  • 你不需要 [KnownType(typeof(List))]

标签: c# wcf asp.net-4.0 wcf-data-services wcf-client


【解决方案1】:

当通过 WCF 发送通用列表时,我们总是创建一个具有列表属性的类。

[ServiceContract] 
public interface IProductService 
{ 
    [OperationContract] 
    int InsertProducts(MyListofProducts products); 
 } 


[DataContract] 
public class  MyListofProducts
{

    [DataMember] 
    List<Product> Products { get; set; }

 }

[DataContract] 
public class Product 
{ 
    [DataMember] 
    public int ProductId{ get; set; } 

    [DataMember] 
    public string ProductName{ get; set; } 

    [DataMember] 
    public List<Product> Products { get; set; } 
} 

【讨论】:

  • 我尝试了您建议的方式。我遇到了同样的错误。我正在使用 WCF 测试客户端,这可能是问题吗?也许它的接口不支持列表?
  • 还有一个可能的问题,就是您的产品包含产品。您可以尝试使用产品的子产品类型
  • 如果我从控制台应用程序调用服务,我可以发送列表。它只是不能与 WCF 测试客户端正常工作
  • 那么区别在于配置文件。确保 confif 设置在测试项目的 app.config 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
相关资源
最近更新 更多