我正在使用这些方法运行WCF服务,
public string UploadInspections(Inspection[] inspections)
public string UploadInspection(Inspection inspection)
[DataContract]
public partial class Inspection
{
[DataMember]
public DateTime DateTime { get; set; }
[DataMember]
public int Id { get; set; }
[DataMember]
public string Comment { get; set; }
[DataMember]
public int Rating { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
从javascript我尝试使用JSON调用这些方法的POST.我用于UploadInspection方法的JSON是这样的,
{"Id":10,"Comment":"New One","Rating":3}
Run Code Online (Sandbox Code Playgroud)
调用了UploadInspection方法,但检查对象设置为null.
我不知道如何使用JSON指定Date字段,我想也许解析器不喜欢没有Date字段的JSON.我从Inspection对象中删除了Date字段,但同样的事情发生了.
另外,对于作为数组的UploadInspections方法,JSON应该是什么样的?我试过一些JSON,
"inspections": [{"Id":10,"Comment":"New One","Rating":3}]
Run Code Online (Sandbox Code Playgroud)
还有这个,
[{"Id":10,"Comment":"New One","Rating":3}, {"Id":11,"Comment":"New Two","Rating":2}]
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误,
OperationFormatter encountered an invalid Message body. Expected to find an attribute with name 'type' and value 'object'. Found value 'string'.
Run Code Online (Sandbox Code Playgroud)
问题不是我想的那样,在我的服务定义中它最初看起来像这样,
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string UploadInspections(Inspection[] inspections);
Run Code Online (Sandbox Code Playgroud)
一旦我删除了这个,
BodyStyle = WebMessageBodyStyle.WrappedRequest
Run Code Online (Sandbox Code Playgroud)
有效!