获得标准的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包含一些垃圾。
可能是什么原因?有任何想法如何诊断问题?
答案 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);