у меня сложный тип:
[DataContract]
public class CustomClass
{
[DataMember]
public string Foo { get; set; }
[DataMember]
public int Bar { get; set; }
}
Затем у меня есть веб-служба RESTful WCF, в которой есть это:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/class/save")]
bool Save(CustomClass custom);
так что на стороне браузера я jsonized мой объект CustomClass, чтобы он выглядел так:
var myClass = "{ foo: \"hello\", bar: 2 }";
$.ajax({
contentType: "application/json",
data: { custom: myClass },
dataType: "json",
success: callback,
type: "POST",
url: "MyService.svc/class/save"
});
Я отправляю данные с помощью jquery, используя $ .ajax, чтобы я мог вручную установить тип контента на «application / json», и когда он отправляется, почтовое тело выглядит как
custom=<uri encoded version of myClass>
Я получаю следующую ошибку:
Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Там
была ошибка проверки начального элемента объекта типа MyAssembly.CustomClass. Обнаружено неожиданное
символ «с». Смотрите журналы сервера для более подробной информации. Трассировка стека исключений:
в System.Runtime.Serialization.XmlObjectSerializer.IsStartObjectHandleExceptions
(XmlReaderDelegator reader)
в System.Runtime.Serialization.Json.DataContractJsonSerializer.IsStartObject (XmlDictionaryReader
читатель)
в System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.ReadObject (Сообщение сообщения)
в System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.DeserializeRequest (Сообщение сообщения
Параметры объекта [])
в System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest (Сообщение
сообщение, параметры объекта [])
в System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest (Сообщение сообщения
Параметры объекта [])
в System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest (Сообщение сообщения, Объект
[] параметры)
в System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & rpc)
в System.ServiceModel.Dispatcher.MessageRpc.Process (логическое значение isOperationContextSet)
Я пытался обернуть свои данные в формате json ... Я пытался использовать $ .post для отправки сообщения (но это не устанавливает тип контента для application / json, поэтому веб-служба не понимает) ... любой идеи?