我在将对象序列化为 JSON 时遇到问题,并且对 WCF 不熟悉,我在调试方面遇到了问题。如果我通过在浏览器中输入 url 来访问服务,我得到的只是页面不可用。
场景:我有A 类,它继承了 B 类的 List。如果我在 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
我通过附加进程单步执行代码,没有抛出异常,我可以确认对象按应有的方式返回,但我显然无法序列化它。我读过关于循环引用的文章,我的一个朋友建议这两个类可能以无限的方式相互序列化。
我的主要问题是:有没有地方可以查看为什么会发生这种情况,或者至少有一些关于它的更多信息?这个问题一直在处理我,我想要的只是序列化这个,当我这样做时,我想我会休一个星期的假期:)。