मैं एक जटिल प्रकार है:WCF, पोस्टिंग JSONized डेटा
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/class/save")]
bool Save(CustomClass custom);
तो ब्राउज़र पक्ष मैं अपने CustomClass jsonized पर
:
[DataContract]
public class CustomClass
{
[DataMember]
public string Foo { get; set; }
[DataMember]
public int Bar { get; set; }
}
मैं तो एक WCF RESTful वेब सेवा उस में यह है कि राशि यह करने के लिए वस्तु की तरह दिखता है:
var myClass = "{ foo: \"hello\", bar: 2 }";
$.ajax({
contentType: "application/json",
data: { custom: myClass },
dataType: "json",
success: callback,
type: "POST",
url: "MyService.svc/class/save"
});
मैं $ .ajax का उपयोग कर तो मैं मैन्युअल रूप से सामग्री प्रकार के लिए सेट कर सकते हैं डब्ल्यू/jQuery डेटा सबमिट "applic व्यावहारिक/json "और जब यह प्रस्तुत postbody तरह
custom=<uri encoded version of myClass>
मैं निम्नलिखित त्रुटि मिलती है दिखता है:
सर्वर अनुरोध संसाधित करते समय एक त्रुटि आई। अपवाद संदेश है 'वहां MyAssembly.CustomClass प्रकार के ऑब्जेक्ट के प्रारंभ तत्व को जांचने में त्रुटि हुई थी। अप्रत्याशित वर्ण 'सी'। अधिक जानकारी के लिए सर्वर लॉग देखें। अपवाद स्टैक ट्रेस है: System.Runtime.Serialization.XmlObjectSerializer.IsStartObjectHandleExceptions (XmlReaderDelegator पाठक) पर System.Runtime.Serialization.Json.DataContractJsonSerializer.IsStartObject (XmlDictionaryReader पाठक) System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter पर पर। ReadObject (संदेश संदेश) System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.DeserializeRequest पर (संदेश संदेश , वस्तु [] पैरामीटर) System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest पर (संदेश संदेश, वस्तु [] पैरामीटर) प्रणाली पर .ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequ स्था (संदेश संदेश , वस्तु [] पैरामीटर) 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) सिस्टम पर। 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)
मैंने अपने जेसन'एज्ड डेटा को लपेटने की कोशिश की है ... मैंने संदेश भेजने के लिए $ .post का उपयोग करने का प्रयास किया है (लेकिन यह सामग्री/जेसन पर सामग्री प्रकार सेट नहीं करता है इसलिए webservice समझ में नहीं आता है) .. कोई विचार?