IService
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest
)]
string SampleMethod(string UserID, string SID, string TypeID);
应用
$.ajax({
url: serviceurl,
data: '{UserID: 12345, SID: 23123 ,TypeID: 123123}',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(JSON.parse(data.d), function (id, obj) {
alert(obj.Msg);
});
}
});
我已经将上面的代码(原型)用于wcf POST服务并托管在IIS 7.0 +
上我无法使用ajaxcallback调用此服务。我用GET方法尝试了相同的CODE,并在IIS上托管。它工作得很好。我在POST方法出错的地方?
答案 0 :(得分:1)
编辑:添加有关Wrapped和Bare Requests的更多信息。
您的代码中存在两个问题。第一个是你使用WebMessageBodyStyle.WrappedRequest并尝试传递像Bare Request这样的值。您可以按如下方式更改消息正文样式。
BodyStyle = WebMessageBodyStyle.Bare
第二个问题是发布数据的JSON代码不正确。它应该如下。 (注意键的引号)
data: '{"UserID": 12345, "SID":23123,"TypeID":123123}'
以下链接概述了Bare和Wrapped请求之间的差异。 http://www.wcf.dotnetarchives.com/2013/12/difference-between-webmessagebodystylew.html
希望这有帮助。