2011-12-02 45 views
3

我正在嘗試使用jQuery 1.7.1對WCF webapi服務進行put操作。相關的客戶端代碼:使用jQuery調用put方法時WCF內部服務器錯誤

$.ajax(
    { 
     type: 'PUT', 
     contentType: 'application/json', 
     dataType: 'json', 
     url: '../webapi/esfuerzos/' + id, 
     data: { json: args }, 
     success: function (respuesta) { 
      $("cancelarEsfuerzoTerreno").trigger("tap"); 
     }, 
     error: function (respuesta) { 
      debugger; 
     } 
    }); 

以下方法簽名是在服務器上:

[WebInvoke(UriTemplate = "{idTicket}", Method = "PUT", RequestFormat = WebMessageFormat.Json)] 
public HttpResponseMessage Agregar(int idTicket, JsonValue json) 

當我在客戶端調用代碼,我得到一個500 - 內部服務器錯誤響應。什麼可能導致這種情況?

編輯:這裏的原始HTTP mesage

PUT http://localhost/mosaq/sae/webapi/esfuerzos/12 HTTP/1.1 
Accept: application/json, text/javascript, */*; q=0.01 
Content-Type: application/json 
X-Requested-With: XMLHttpRequest 
Referer: http://localhost/mosaq/sae/movil/ 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) 
Host: localhost 
Content-Length: 355 
Connection: Keep-Alive 
Pragma: no-cache 
Cookie: ASP.NET_SessionId=jy0shfatrj4icobvagysrnm2 

json%5BpreparacionCoordinacionMinutos%5D=null&json%5BpreparacionCoordinacionHoras%5D=null&json%5BesperaMinutos%5D=null&json%5BesperaHoras%5D=null&json%5BtrasladoIdaFin%5D=null&json%5BtrasladoIdaInicio%5D=null&json%5BtrasladoRegresoFin%5D=null&json%5BtrasladoRegresoInicio%5D=null&json%5BejecucionFin%5D=null&json%5BejecucionInicio%5D=null&json%5Btipo%5D=0 
+0

您應該發佈與500錯誤關聯的異常。這應該告訴我們問題是什麼。 – Jacob

+0

我怎樣才能得到例外?我在該方法中放置了一個斷點,但它不會中斷:S –

+0

也許在Windows應用程序日誌中有某些內容。 – Jacob

回答

0

問題是數據對象沒有正確序列化。調用args對象的json.stringify解決了這個問題。

感謝賈森幫我弄明白了!

0

最有可能的客戶端設置錯誤的請求類型。例如,應該是「text/xml」,但是是「appliation/x-www-form-urlencoded」。

+0

能否詳細說明一下?將原始http添加到原始帖子 –

+0

我們已經觀察到500次,主要是因爲錯誤的請求類型。如果還有其他原因,請嘗試使用http調試器比較合法和錯誤的請求。內容類型 –

+0

已設置爲application/json。 text/json不能解決問題。我不認爲text/xml適用,因爲我發送json而不是xml。 –

1

如果您看到服務器端錯誤和像您這樣的拳頭斷點,永遠無法達到服務方法,最好的方法是啓用跟蹤並使用服務跟蹤查看器工具查看輸出。可能有很多輸出,但關注錯誤(紅色)和警告(黃色)。

看到這個答案question和MSDN文檔here如何配置東西。

相關問題