2011-05-24 119 views
0

得到了與方法的標準AMSX網絡服務,它拋出一個異常:ASMX Web服務拋出異常了垃圾xhr.responseText客戶端

[WebMethod(EnableSession = true)] 
public JsonClientSideDataGrid LoadUserControl(string dataGridForm, string viewParameters, string dataGridSettings, bool isOnPopup) 
{ 
    // code is here 
    // ... 

    return result; 
} 

在一個客戶端標準的jQuery代碼:

jQuery.ajax({ 
    type: "POST", 
    url: webCallUrl, 
    processData: false, 
    data: jQuery.toJSON(data), 
    contentType: "application/json; charset=utf-8", 
    timeout: Configuration.WSTimeout, 
    dataType: "json", 
    success: callbackFunction, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { errorFunction(XMLHttpRequest, textStatus, errorThrown, callId) } 
}); 

問題是:Web服務調用工作正常(我可以看到調試器),但在客戶端我總是有一個失敗 - 錯誤函數被調用。我假設在將對象序列化爲JSON的過程中發生了一些不好的事情。我無法診斷,VS並沒有停止在問題的地方。

此外,textStatus包含always - 「error」,XMLHttpRequest.responseText包含一些垃圾。

這可能是什麼原因?任何想法如何診斷問題?

+0

在測試控制檯應用程序中調用該方法,作爲普通類庫函數並查看它返回的內容。 – 2011-05-24 11:35:05

回答

1

如果您沒有禁用服務的幫助/測試屏幕,則應該可以通過網絡瀏覽器測試您的方法,並查看那裏的序列化錯誤。它總是對我很好。 URL應該只是簡單:

http://<your_your_service_host_and_path>/<your_service_name>.asmx/LoadUserControl 

此外,作爲評論所說,你可以嘗試調用Web方法從代碼的標準方法。在這種情況下,當您使用JavaScriptSerializer時,您應該會得到相同的錯誤。我不是100%確定的,但這可能與ASMX服務使用的相同。快速示例:

var result = new YourNamespace.YourService(...).YourMethod(...); 
var serializedResult = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(result); 
相關問題