WCF服务多个方法调用一个ajax请求

时间:2011-07-29 20:37:44

标签: wcf web-services datacontract

在我开始提问之前,请先了解一些背景信息。我有通过jquery.ajax调用的WCF服务。我可以在控制台窗口中看到并使用其他工具验证请求只发生一次。

在服务器端,我看到该方法完全触发了3次。怎么会发生这种情况?在我使用以下属性和签名

进行装饰的服务上
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public ResponseEnvelope AddToCart(Order[] Order)  //ResponseEnvelope
{
   .....
}

有趣的是,当我将响应从ResponseEnvelope更改为void时,它可以正常工作。

我怀疑这可能与我的DataContracts和对象层次结构有关,我现在正在测试它。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我一直在度假但是这里是这个问题的答案,以防它帮助任何人下线。这个问题可能没有足够的信息来解决问题。

事实证明问题出在串行器内部。使用对象作为DataContract中的类型生成了一个我最终能够捕获的错误。错误信息实际上非常清楚如何解决问题,所以我将其留在那。

将任何静态未知的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。    在System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract,XmlWriterDelegator xmlWriter,Object obj,Boolean verifyKnownType,RuntimeTypeHandle declaredTypeHandle)    在System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(XmlWriterDelegator xmlWriter,Object obj,RuntimeTypeHandle objectTypeHandle,Type objectType,Int32 declaredTypeID,RuntimeTypeHandle declaredTypeHandle,Type declaredType) ...