2

我正在尝试从 REST WCF 服务返回一个通用的 ICollection。以下应该是可能的吗?

[ServiceContract]
public class WebConfigurationManager {

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

}

当我尝试从 Web 浏览器执行此操作时,出现错误。查看我的 WCF 跟踪向我展示了这一点:

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

4

2 回答 2

2

这应该有效:

[ServiceKnownType(typeof(string[]))]
[ServiceContract]
public class WebConfigurationManager {
    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }
}
于 2009-07-16T20:02:44.743 回答
0

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

[ServiceKnownType(typeof(string[]))]

[ServiceContract] 属性上方。

于 2009-07-16T20:03:18.437 回答