我的数据合同看起来像这样:
[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绑定。我相信我有一个序列化错误,但如何让它工作?
答案 0 :(得分:1)
我相信我已经通过将签名从object更改为byte []并自行进行序列化来处理此问题。我想我使用JSON.NET。现在已经有一段时间了。
然后,在调用者方面,我将有效负载反序列化为我想要的内容。
答案 1 :(得分:1)
因为您使用object作为集合中的类型,所以WCF序列化程序无法知道它可以是什么类型,因此它无法序列化集合。
您可以使用KnownTypeAttribue指示可以在集合中存储哪种对象。