【问题标题】:WCF REST POST of JSON: Parameter is emptyJSON的WCF REST POST:参数为空
【发布时间】:2011-07-26 20:01:36
【问题描述】:

我使用 Fiddler 将 JSON 消息发布到我的 WCF 服务。该服务使用 System.ServiceModel.Activation.WebServiceHostFactory

[OperationContract]
[WebInvoke
(UriTemplate = "/authenticate",
       Method = "POST",
       ResponseFormat = WebMessageFormat.Json,
       BodyStyle = WebMessageBodyStyle.WrappedRequest
       )]
String Authorise(String usernamePasswordJson);

POST 完成后,我可以闯入代码,但参数 usernamePasswordJsonnull。这是为什么呢?

注意:奇怪的是,当我将 BodyStyle 设置为 Bare 时,帖子甚至没有让我调试代码。

这是提琴手屏幕:

【问题讨论】:

    标签: wcf json fiddler


    【解决方案1】:

    您将参数声明为 String 类型,因此它需要一个 JSON 字符串 - 并且您正在将一个 JSON 对象传递给它。

    要接收该请求,您需要签订与以下类似的合同:

    [ServiceContract]
    public interface IMyInterface
    {
        [OperationContract]
        [WebInvoke(UriTemplate = "/authenticate",
               Method = "POST",
               ResponseFormat = WebMessageFormat.Json,
               BodyStyle = WebMessageBodyStyle.Bare)]
        String Authorise(UserNamePassword usernamePassword);
    }
    
    [DataContract]
    public class UserNamePassword
    {
        [DataMember]
        public string UserName { get; set; }
        [DataMember]
        public string Password { get; set; }
    }
    

    【讨论】:

    • 太棒了。这就像做梦一样。经过一天的挫折,我终于有了解决办法。
    • 太棒了,我正在努力处理传递给服务的空数据,您的建议解决了这个问题。感谢分享。
    • 我认为魔术线BodyStyle = WebMessageBodyStyle.Bare 是过去不想数 小时以来困扰我的原因!感谢您发布此 sn-p!
    猜你喜欢
    • 2013-05-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多