你好,我在 Sitecore 6 下有 WCF 服务,webHttpEndpointBehavior
我使用 Glass Mapper 读取项目,Glass Mapper 依赖于 Castle 库。
它运行良好,但我有一些使用 Contract 的方法,例如:
[OperationContract]
[WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<Shade> GetAllShades(int columns, int rows);
我尝试以 JSON 格式返回我的类的列表,在使用 SvcTraceViewer.exe 调试我的服务期间,我发现了下一个错误:
尝试序列化参数时出错:GetFamilyShadesResult。InnerException 消息是 'Type 'Castle.Proxies.ShadeProxy' 与数据合同名称 'ShadeProxy: http://schemas.datacontract.org/2004/07/Castle.Proxies ' 不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。
如何解决这个问题?Castle.Proxies.ShadeProxy
是 Castle 下的动态类,我不能使用 KnownTypeAttribute
.
实际上,如果我使用 JSON.net 库并将结果作为字符串返回,则一切正常。