ASMX Web服务在客户端上的xhr.responseText中抛出异常垃圾

时间:2011-05-24 11:30:52

标签: jquery wcf web-services asmx

获得标准的AMSX Web服务,该方法引发异常:

[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总是包含 - “error”,XMLHttpRequest.responseText包含一些垃圾。

可能是什么原因?有任何想法如何诊断问题?

1 个答案:

答案 0 :(得分:1)

如果您没有禁用服务的帮助/测试屏幕,您应该能够通过Web浏览器测试您的方法,并在那里查看序列化错误。它总是对我很好。 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);