2013-05-29 88 views
0

我已經創建了一個接受.NET System.DateTime值作爲輸入參數如下JSON WCF服務:JSON WCF服務與System.DateTime的參數

[OperationContract] 
[WebGet(ResponseFormat=WebMessageFormat.Json)] 
ReclaimedH2OMetric GetCurrentReclaimedH2OMetric(System.DateTime currentDate); 

當我嘗試在我的網站使用jQuery消費服務頁面我得到以下錯誤:

The server encountered an error processing the request. The exception message is 'SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.'

這裏是我的jQuery代碼:

var rawResults; 
var currentDate = new Date('10/1/2012'); 
var jsonDate = '\\/Date(' + currentDate.getTime() + ')\\/'; 

$.ajax(
{ 
    async: false, 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    url: "http://www.mydomain.com/Dashboard_WaterResources/WCFService/Dashboard.svc/GetCurrentReclaimedH2OMetric", 
    dataType: "json", 
    data: '{"currentDate": "' + jsonDate + '"}', 
    success: function (results) { 
     rawResults = results; 
    }, 
    error: function (xhr) { 
     alert(xhr.responseText); 
    } 
}); 

的代碼var jsonDate = '\\/Date(' + currentDate.getTime() + ')\\/';下面一行試圖使用this問題以正確的JSON格式的日期格式爲基準

回答

0

我修改了WCF服務簽名以接受long數據類型而不是System.DateTime對象。

此外,我是如何格式化ajax jQuery調用的data屬性的問題。這裏是工作的更新的代碼:

var rawResults; 
var currentDate = new Date('10/1/2012 12:00 AM'); 
var jsonDate = ConvertDateToTicks(currentDate); 

$.ajax(
{ 
    async: false, 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    url: "http://localhost/Dashboard_WaterResources/WCFService/Dashboard.svc/GetCurrentReclaimedH2OMetric", 
    data: { dateInTicks: jsonDate }, 
    success: function (results) { 
     rawResults = results; 
    }, 
    error: function (xhr) { 
     alert(xhr.responseText); 
    } 
}); 
0

的jsonDate內的整數應該是從epoch的毫秒數。

How to convert JavaScript date object to ticks

或考慮使用Moment.js得到毫秒。

+0

我試過'jsonDate'變量轉換成蜱使用提供的鏈接,仍然公式得到了相同的SQL溢出錯誤。 –

+0

如果你在WCF服務的服務器上放置一個斷點,它對日期說什麼? – Rob

+0

currentDate = {1/1/0001 12:00:00 AM} –