我正在尝试托管一个WCF服务,该服务通过提供json输出流来响应传入的请求。我有以下类型
[DataContract]
[KnownType(typeof(List<HubCommon>))]
[KnownType(typeof(Music))]
[KnownType(typeof(AppsAndPlugins))]
[KnownType(typeof(Notifications))]
[KnownType(typeof(Scenes))]
[KnownType(typeof(Skins))]
[KnownType(typeof(Ringtones))]
[KnownType(typeof(Alarms))]
[KnownType(typeof(Widgets))]
[KnownType(typeof(Wallpapers))]
[KnownType(typeof(Soundsets))]
public class HubCommon{}
在我的* .svc.cs文件中,我执行以下操作
List<HubCommon> hubContent = _ldapFacade.GetResults(query);
MemoryStream stream = new MemoryStream();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(HubCommon));
serializer.WriteObject(stream,hubContent);
所以基本上我试图将List序列化为Json但是我在“WriteObject”执行时遇到以下错误: -
服务器在处理请求时遇到错误。异常消息是'Type'System.Collections.Generic.List`1 [[HubContentCore.Domain.HubCommon,HubContentCore,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]',数据协定名称为'ArrayOfHubCommon:http ://schemas.datacontract.org/2004/07/HubContentCore.Domain'不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。'
我在这里缺少什么?
提前致谢。
答案 0 :(得分:1)
您的DataContractJsonSerializer的类型为HubCommon
,但您正在编写List<HubCommon>
类型的对象,并且HubCommon
未添加KnownTypAttribute