WCF正在撤销MyClass的对象数组而不是通用列表

时间:2015-08-11 14:49:07

标签: c# wcf

我从互联网上尝试了很多解决方案。但我无法解决这个问题。

我尝试过以下链接的解决方案:

WCF Proxy Returning Array instead of List EVEN THOUGH Collection Type == Generic.List

WCF Returning Array instead of List EVEN THOUGH Collection Type == Generic.List

Why does WCF return myObject[] instead of List<T> like I was expecting?

但我无法解决它。

我有2份相同的wcf服务源代码“WCFServiceApplication”。一个在IIS7上的LAN上托管,另一个在我的解决方案中在本地运行。

IIS7上托管的那个工作正常并返回对象列表。但是我的本地解决方案。我试图在解决方案中本地引用在我的一个名为“MyProjectLibrary.csproj”的本地项目中使用“WCFServiceApplication”函数。

但我在这里遇到了问题。它没有给我自定义类对象的通用列表。

感谢任何帮助。

由于

我正在返回以下课程列表:

[DataContract(IsReference = true)]
[KnownType(typeof(Joc))]
[KnownType(typeof(Stakeholder))]
[XmlInclude(typeof(JocStakeholder))]
public class JocStakeholder
{
    [DataMember]
    public long ID { get; set; }

    [DataMember]
    public virtual Joc joc { get; set; }

    [DataMember]
    public virtual Stakeholder stakeholder { get; set; }

}

Joc和利益相关者是另外两个类。实际上,这些是代码优先实体。

我的界面有这个功能:

[ServiceContract]
public  interface IService
{
    [OperationContract]
    public IList<JocStakeholder> GetJocStakeHolders();
}

3 个答案:

答案 0 :(得分:1)

按如下所示更改客户端的服务参考设置

右键单击服务参考并选择 配置服务参考

数据类型属性设置下,将集合类型值从Array更改为

System.Collections.Generic.List

这会为您提供通用列表作为回复

答案 1 :(得分:0)

指定WCF客户端的列表集合类型。默认类型为Array。

您可以在添加服务引用点击Advance in Add Service Reference Dialog Box之前进行更改。在Collection Type旁边的Data Type下,选择drownlist System.Collections.Generic.List。

答案 2 :(得分:0)

我尝试了大部分在Stackoverflow.com和Internet上看到的方法。但我无法找到一个可以为我完成这项工作的人。

所以,最后,我发现了这篇文章WCF the Right Wat by Miguel Castro,我通过服务实现了与Miguel Sir正在做的相同的架构。该架构解决了这个问题。

但是一些程序员可能不同意该文章中使用的架构,因为Model Classes项目正作为DLL分发给客户端。而在WCF中,通常通过服务公开类。