WCF数据合同数据成员,字典<string,object =“”> </string,>

时间:2011-07-19 20:58:55

标签: wcf serialization datacontract

我的数据合同看起来像这样:

    [DataContract(Name = "MyResult", Namespace = "MyNamespace")]
    public class MyResult
    {
        [DataMember(Name = "MyValues", Order = 3)]
        public Dictionary<string, object> MyValues { get; set; }
    }

当我用字符串,int等简单类型填充Dictionary中的对象时,没有问题。如果我在其中放置更复杂的对象,如List(of strings),我会收到以下错误:

接收到--http:// localhost:8081 / externalwsapi的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。

这个错误没有意义,我当然使用Http绑定。我相信我有一个序列化错误,但如何让它工作?

2 个答案:

答案 0 :(得分:1)

我相信我已经通过将签名从object更改为byte []并自行进行序列化来处理此问题。我想我使用JSON.NET。现在已经有一段时间了。

然后,在调用者方面,我将有效负载反序列化为我想要的内容。

答案 1 :(得分:1)

因为您使用object作为集合中的类型,所以WCF序列化程序无法知道它可以是什么类型,因此它无法序列化集合。

您可以使用KnownTypeAttribue指示可以在集合中存储哪种对象。