.net – WCF,发布JSONized数据

前端之家收集整理的这篇文章主要介绍了.net – WCF,发布JSONized数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个复杂的类型:
[DataContract]
public class CustomClass
{
   [DataMember]
   public string Foo { get; set; }
   [DataMember]
   public int Bar { get; set; }
}

然后我有一个WCF RESTful Web服务,其中包含:

[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"
});

我使用$.ajax提交数据w / jquery,所以我可以手动将内容类型设置为“application / json”,当它提交时,postbody看起来像

custom=<uri encoded version of myClass>

我收到以下错误

服务器遇到处理该请求的错误.异常消息是’There
是检查MyAssembly.CustomClass类型的对象的起始元素的错误.遇到意外
角色“c”.有关详细信息,请参阅服务器日志.异常堆栈跟踪是:
在System.Runtime.Serialization.XmlObjectSerializer.IsStartObjectHandleExceptions
(XmlReaderDelegator阅读器)
在System.Runtime.Serialization.Json.DataContractJsonSerializer.IsStartObject(XmlDictionaryReader
读者)
在System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.ReadObject(消息消息)
在System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.DeserializeRequest(消息消息
,Object []参数)
在System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message
message,Object []参数)
在System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(消息消息
,Object []参数)
在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(Boolean isOperationContextSet)

我已经尝试包装我的json的数据…我已经尝试使用$.post发送消息(但是没有将内容类型设置为application / json,所以webservice不明白)..任何想法?

解决方法

所以您遇到的问题是序列化错误. WCF想看到JSON中包含的属性名称,包含“”

所以我刚刚遇到同样的错误在哪里

data:'{id: 1 }',

没有工作,但是

data:'{"id": 1 }',

做了工作

我希望这有助于别人出去

猜你在找的jQuery相关文章