【发布时间】:2013-02-11 20:55:43
【问题描述】:
我有一个足够简单的网络服务:
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string GetToken(string a)
{
}
我使用 JQuery 将其称为客户端:
$.ajax({
post: 'GET',
contentType: "application/json; charset=utf-8",
dataType: 'json',
url: '../url/GetToken',
data: "{'a':'test'}",
success: function (data) {
},
error: function (a, b, c) {
}
});
调用总是失败,返回的错误是 500 Internal Server Error。我在 web 服务中放置了一个断点,并且根本没有到达代码。当我修改 Web 服务以完全不接受任何参数(并从 JQuery 调用中删除 data 元素)时,调用成功。我玩过不同的方法来传递data 元素;我已经传递了一个 JSON 对象(没有引号),并且我已经从 a 参数周围删除了引号。都不行。
编辑:
使用 Fiddler,我确定导致 500 的实际错误是“无效的 Web 服务调用,参数缺失值”。
编辑 2:
以这种方式传递数据有效:
data: "a='test'"
我不知道为什么。有什么想法吗?
【问题讨论】:
-
您是否在 GetToken 方法中返回任何内容,只是没有显示?
-
@Decker97 - 是的,我是。 Web 服务返回一个字符串。
标签: c# web-services jquery asmx