1

我有一个非常奇怪的问题。我有一个工作的 WCF 服务。

[ServiceContract]
public interface IService
{
    [OperationContract]
    int AddResult(int result, string name);

    [OperationContract]        
    int list(int count);
}

在另一堂课中,我实现了这项服务。它有效。但是当我像这样更改方法“列表”时:

[ServiceContract]
public interface IService
{
    [OperationContract]
    int AddResult(int result, string name);

    [OperationContract]        
    List<string> list(int count);        
}

当我从目标项目(它是一个 Windows Phone 应用程序)添加服务引用时,我收到了几个错误和警告。它们的关键思想是无法加载服务(或无法加载端点)。两种方法之间的区别非常小 - List 而不是 int 类型。但这很关键。为什么会这样?为什么我不能使用列表?

4

1 回答 1

1

您是否尝试将 List 集合封装到代理类中?您可以尝试以下方法:

[DataContract]
public class MyData
{
    [DataMember]
    public List<string> list { get; set; }
}

[ServiceContract]
public interface IService
{
    [OperationContract]
    int AddResult(int result, string name);

    [OperationContract]        
    MyData list(int count);        
}

另外,看看这个链接,我认为它可能是你正在寻找的。

更新

根据该线程评论部分的讨论,问题不在于 WCF 服务本身,而是在@user1460819 Windows Phone 应用程序中生成的客户端上。

将WCF服务绑定改为“basicHttpBinding”,重新生成客户端的WCF引用,重新构建整个项目后,这个问题就解决了。

于 2012-06-18T18:19:48.233 回答