Несколько методов службы WCF вызывают один запрос ajax - PullRequest
1 голос
/ 30 июля 2011

Прежде чем я начну свой вопрос, немного дополнительной информации. У меня есть служба WCF, которая вызывается через jquery.ajax. Я вижу в окне консоли и проверяю с помощью других инструментов, что запрос выполняется только один раз.

На стороне сервера, я вижу метод стрельбы точно 3 раза. Как такое могло произойти? На сервисе я украшаю со следующими атрибутами и подписью

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

Интересно то, что когда я меняю ответ с ResponseEnvelope на void, он отлично работает.

Я подозреваю, что это может иметь какое-то отношение к моей DataContracts и иерархии объектов, и сейчас я проверяю это.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 августа 2011

Я был в отпуске, но вот ответ на эту проблему на случай, если это поможет кому-нибудь в дальнейшем. Вопрос, вероятно, не содержал достаточно информации, чтобы решить проблему.

Как оказалось, проблема в сериализаторе. Использование объекта в качестве типа в DataContract вызвало ошибку, которую я в итоге смог зафиксировать. Сообщение об ошибке было на самом деле очень четким о том, как решить проблему, поэтому я оставлю это на этом.

Добавьте любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или путем добавления их в список известных типов, передаваемый DataContractSerializer. в System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType (DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, логический verifyKnownType, RuntimeTypeHandle объявляетTypeHandle) в System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType (XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Тип objectType, объявленный IntyTyTyHTHTypeTHTypeTHTlepeHTleHTyTyTyTleHTyTleHTyTeHTleTeHTILETyTeHTyTeHTleTeHTyTeTeHeTeleTeHTyTeTeTehTleTHTeleTHTyTeTeTeHTleTyTyTyTeTeTyTyTyTyTy)) ...

...