如果 contentType = "application/x-www-form-urlencoded; charset=utf-8",我可以使用 jQuery 调用我的网络服务
但是,这将返回 xml:<string>[myjson]</string>
如果我尝试使用“application/json; charset=utf-8” POST 到服务,我会收到一个 500 错误,其中包含空的 StackTrace 和 ExceptionType。我的网络服务功能从未被击中,所以我不太确定如何调试这种情况。
我的方法和类用适当的属性修饰,并设置为使用 JSON 作为它们的响应类型(我的 wsdl 和 disco 文件也是如此)。我在 web.config 中安装了 Ajax 扩展和所需的条目。
这是在 SharePoint 场上,但我不确定这会产生多大的不同。我在所有 WFE 上部署了 web.config 更改,并安装了 ajax 扩展。该服务再次起作用,它只接受默认内容类型以外的任何内容。
不知道我在这里错过了什么,伙计们......
我的ajax调用:
$.ajax({
type: "POST",
url: "/_vti_bin/calendar.asmx/Test",
dataType: "json",
data: "{}",
contentType: "application/json; charset=UTF-8",
success: function(msg){
alert(msg);
},
error: function(xhr, msg){ alert(msg + '\n' + xhr.responseText); }
});
我的网络服务类:
[WebService(Namespace = "http://namespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class CalendarService : WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Test()
{
return "Hello World";
}
}