2011-07-29 41 views
1

在我開始我的問題之前有一點背景信息。我有通過jquery.ajax調用的WCF服務。我可以在控制檯窗口中看到並使用其他工具驗證請求只發生一次。WCF服務多種方法調用一個AJAX請求

在服務器端,我看到準確觸發3次的方法。這怎麼會發生?對我具有以下屬性裝飾服務和簽名

[OperationContract] 
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public ResponseEnvelope AddToCart(Order[] Order) //ResponseEnvelope 
{ 
    ..... 
} 

有趣的是,當我改變從ResponseEnvelope應對void它工作正常。

我懷疑這可能與我的DataContracts和對象層次有關,我現在正在測試。

任何幫助表示讚賞。

+0

你可以發佈jQuery代碼 – VJAI

回答

0

我一直在度假,但這裏是這個問題的答案,以防止任何人下線。這個問題可能沒有足夠的信息來解決問題。

事實證明問題出在序列化程序中。在DataContract中將對象用作類型會產生一個我最終能夠捕獲的錯誤。錯誤信息實際上是非常明確的,關於如何解決這個問題,所以我會留下它。

將任何未知的靜態類型添加到已知類型列表中 - 例如,使用KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知類型列表中。 在System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract,XmlWriterDelegator的XmlWriter,對象OBJ,布爾verifyKnownType,的RuntimeTypeHandle declaredTypeHandle) 在System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(XmlWriterDelegator的XmlWriter,對象OBJ,的RuntimeTypeHandle objectTypeHandle,類型objectType,Int32 declaredTypeID,RuntimeTypeHandle declaredTypeHandle,類型declaredType) ...