WCF Post:Null DataMember Properties

时间:2014-05-19 13:26:44

标签: wcf post

我正在尝试将日期发布到WCF POST方法。但是发布到WCF POST方法的对象在其任何属性下都没有值(null)。

数据合同类:

[DataContract]
public class NewSession
{
    [DataMember]
    public int id { get; set; }
    [DataMember]
    public string title { get; set; }
    [DataMember]
    public DateTime? date { get; set; }
    [DataMember]
    public string speaker { get; set; }
}

WCF发布方法:

[OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/add")]
    public string AddSession(NewSession session)
    {
        //code to add new session
        return "success";
    }

所有WCF Post方法的jquery代码:

$(".lnk-add").on("click", null, function () {
        var session = [{
            "id": "3",
            "title": "REST 3",
            "date": "05/15/2014",
            "speaker": "Ron Jacobs"
        }];
        $.ajax({
            url: '/Sessions/add',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(session),
            success: function (data, textStatus, jqXHR) {
            }
        });
    });

在调试器中,我得到空值(查看截图) enter image description here

这些空值的可能原因是什么?

感谢。

2 个答案:

答案 0 :(得分:0)

我认为问题可能是您没有指出JSON数据包含NewSession对象。

试试这个:

var session = [{"NewSession":{
  "id": "3",
  "title": "REST 3",
  "date": "05/15/2014",
  "speaker": "Ron Jacobs"
  }}];

答案 1 :(得分:0)

我认为问题在于您发送的是会话数组而不仅仅是会话对象。

当我重新创建您的场景并使用邮递员发送

{"id": "3","title": "REST 3","date": "\/Date(2014-05-15)\/","speaker": "Ron Jacobs"}

我得到了正确的值但是如果我发送的话则没有:

[{"id": "3","title": "REST 3","date": "\/Date(2014-05-15)\/","speaker": "Ron Jacobs"}]