【发布时间】:2013-07-12 01:34:35
【问题描述】:
我在将对象序列化为 JSON 时遇到问题,而且我是 WCF 的新手,我在调试方面遇到了问题。如果我通过在浏览器中输入 url 来访问服务,我得到的只是页面不可用。
场景:我有 A 类继承了 B 类列表。 如果我在 A 类中注释掉它添加到它的集合中,我至少可以点击服务(显然不会出现任何数据),但是如果它添加到它的集合中,我就不能再击中服务。
界面:
<OperationContract()> _
<WebGet(UriTemplate:="getAdverseReactions", responseFormat:=WebMessageFormat.Json)> _
<ServiceKnownType(GetType(AdverseReactions))> _
<ServiceKnownType(GetType(AdverseReaction))> _
Function GetAdverseReactions() As AdverseReactions
实现接口:
Public Function GetAdverseReactions() As AdverseReactions Implements IPortalCoreService.GetAdverseReactions
Return CoreServiceController.GetAdverseReactions()//which returns class A
End Function
A类:
<CollectionDataContract(Name:="AdverseReactionsCollection", ItemName:="AdverseReaction")> _
Public Class AdverseReactions
Inherits List(Of AdverseReaction)
B类:
<DataContract(IsReference:=True)> _
Public Class AdverseReaction
我通过附加进程单步执行代码,没有抛出异常,我可以确认对象按应有的方式返回,但我显然无法序列化它。我读过关于循环引用的文章,我的一个朋友建议这两个类可能会以无限的方式相互序列化。
我的主要问题是:有没有什么地方可以让我了解为什么会发生这种情况,或者至少有一些关于它的更多信息?这个问题一直在处理我,我只想序列化这个,当我这样做时,我想我会休一个星期的假期:)。
【问题讨论】:
-
它必须是
WCF服务还是您选择实现它的方式? -
@KarlAnderson 是的。我正在使用现有的代码库。
标签: json vb.net wcf serialization