2014-05-19 96 views
1

我想將日期發佈到WCF POST方法。但是發佈到WCF POST方法的對象在其任何屬性下都沒有值(空)。WCF發佈:空數據成員屬性

數據合同類:

[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 POST方法:

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

jQuery代碼到所有WCF Post方法:

$(".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

這些空值有什麼可能的原因?

謝謝。

+0

你是如何託管服務? –

+0

我在ASP.NET Web應用程序中添加了服務,並在aspx頁面上訪問它。 –

回答

0

我相信問題可能是您沒有指出JSON數據包含NewSession對象。

試試這個:

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

我認爲它不是問題,因爲我使用'BodyStyle = WebMessageBodyStyle.Bare'而不是'Wrapped'或'WrappedRequest'。儘管如此,我仍然嘗試過但沒有運氣 –

0

我認爲這個問題是您正在發送會話的陣列,而不是隻是一個session對象。

當我重新創建的場景和使用郵遞員送

{"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"}] 
+0

問題是日期。如果我在會話對象中發送'「日期」:「05/15/2014」',它會顯示「400 - 錯誤的請求」。如果我將它發送到數組中,則對象下的值爲null。如果我以你所描述的日期格式發送日期:「\/Date(2014-05-15)\ /」',我可以在會話對象中找到除日期之外的值。日期下的值不是我正在發送的值,而是始終爲「1970年1月1日05:00:02」。日期有什麼問題? –