【问题标题】:WCF Json Service Parameters are NullWCF Json 服务参数为空
【发布时间】:2013-12-01 01:06:59
【问题描述】:

我在这方面找到了一些不错的主题,但还没有一个可以解决我的问题。如果有人有任何想法,我愿意接受建议!谢谢。

我正在使用 WCF 构建一个 REST JSON 服务,该服务将接受一个成员对象并将其插入到我的数据库中。但是,当使用 Fiddler 将参数发送到我的服务时,这些参数似乎都为空。如果我在我的服务代码中发送值,它们会正确插入到数据库中。

[OperationContract]
[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "PutMember")]
int PutMember(Member member1);

我的提琴手调用是带有此标头的http://127.0.0.1:81/Service1.svc/PutMember 的 POST:

User-Agent: Fiddler
Host: 127.0.0.1:81
Content-Length: 245
Content-Type: application/json

还有身体:

{"member1":
[{
"first_name":"shaw",
"last_name":"levin",
"gender":0,
"Grad_Year":2015,
"personality":3,
"campus":1,
"social":0,
"cleaning":1,
"diet":1,
"religious":3,
"roomamate_prefs":"Hello",
"hs_engagement":"World"
}]}

数据合约如下所示:

[DataMember]
public int Primary_ID
{
    get { return _id; }
    set { _id = value; }
}

[DataMember]
public string First_Name
{
    get { return _first; }
    set { _first = value; }
}

【问题讨论】:

    标签: c# json wcf rest null


    【解决方案1】:

    JSON 属性和 C# 属性的大小写必须匹配,或者您必须在属性中指定另一种大小写。

    [DataMember]
    public string first_name { get; set; }
    

    [DataMember(Name = "first_name")]
    public string First_Name { get; set; }
    

    【讨论】:

    • 谢谢!这有助于解决我的问题,但我还需要执行 Konrad 建议的修复(区分大小写)。
    【解决方案2】:

    您发送的是一个数组而不是单个对象。尝试发送:

    {"member1":
    {
    "first_name":"shaw",
    "last_name":"levin",
    "gender":0,
    "Grad_Year":2015,
    "personality":3,
    "campus":1,
    "social":0,
    "cleaning":1,
    "diet":1,
    "religious":3,
    "roomamate_prefs":"Hello",
    "hs_engagement":"World"
    }}
    

    【讨论】:

    • 谢谢!这有助于解决我的问题,但我还需要执行 Markus 建议的修复(区分大小写)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多