【背景:】
WCF为数据提供方,客户端通过HTTP方式访问请求数据,数据返回格式为为JSON
将实体XXX标记为 [DataContract(IsReference=true)]后通过访问出错,服务器错误提示如下:
The server encountered an error processing the request. The exception message is 'Error in deserializing body of request message for operation 'GetOrders'. The type 'XXXX' cannot be serialized to JSON because its IsReference setting is 'True'. The JSON format does not support references because there is no standardized format for representing references. To enable serialization, disable the IsReference setting on the type or an appropriate parent class of the type.'.
不知是否有碰到相同问题的园友,望指点一二。
PS:由于要兼容原来的服务调用。所以[DataContract(IsReference=true)]方案暂不考虑。
为什么要标记IsReference呢,去掉就不会报错的,客户端请求的时候,您指定某个方法返回string类型的值公布出去就行了
系统采用了EF实体框架,为了保留实体的导航属性,所以统一将DTO都标记为[DataContract(IsReference=true)]。