WCF WebGet和ICollection<>

时间:2009-07-16 19:38:00

标签: wcf webget

我正在尝试从REST WCF服务返回通用ICollection。以下是否可能?

[ServiceContract]
public class WebConfigurationManager {

    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }

}

当我尝试从网络浏览器执行此操作时,出现错误。浏览我的WCF跟踪向我展示了这个:

  

无法序列化'System.String []'类型的参数(对于操作'GetStrings',合同'WebConfigurationManager'),因为它不是确切的类型'System.Collections.Generic.ICollection`1 [System.String]'在方法签名中并且不在已知类型集合中。要序列化参数,请使用ServiceKnownTypeAttribute将类型添加到操作的已知类型集合中。

2 个答案:

答案 0 :(得分:2)

这应该有效:

[ServiceKnownType(typeof(string[]))]
[ServiceContract]
public class WebConfigurationManager {
    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }
}

答案 1 :(得分:0)

安德鲁指出我正确的方向。答案是添加

[ServiceKnownType(typeof(string[]))]

在[ServiceContract]属性上方。