托管WCF POST服务无法正常工作

时间:2015-02-17 04:53:51

标签: c# wcf post

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方法出错的地方?

1 个答案:

答案 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

希望这有帮助。