我在將對象序列化爲JSON時遇到問題,並且對於WCF來說是新手,我在調試方面從何處開始有問題。如果我通過在瀏覽器中輸入網址來訪問該服務,則無法使用該頁面。調試不會序列化對象的WCF服務
該場景:我有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是的。我正在使用現有的代碼庫。 –