1

我一直在尝试创建一个基于 REST 的 WCF 服务来发送和接收 json 数据。我能够让大多数事情正常工作,但最后一块真的难倒我。

我正在向我的服务发送一个复杂的数据类型。我正在发送数据,但似乎我的类没有被实例化。

类声明(在单独的类文件中):

public class WhereItsAt
{
    public float Latitude { get; set; }
    public float Longitude { get; set; }
    public string Category { get; set; }
    public string SearchTerms { get; set; }
    public float Distance { get; set; }
}


    [WebInvoke(Method = "POST", UriTemplate = "/New", RequestFormat = WebMessageFormat.Json)]
    public string Create(WhereItsAt newstuff)
    {
        return string.Format("Success: {0} <Should show search terms here>", newstuff.SearchTerms);
    }

问题是newstuff.SearchTerms(好的,所有的newstuff)为空或0。

如果我修改我的课程:

public class WhereItsAt
{
    public float Latitude { get; set; }
    public float Longitude { get; set; }
    public string Category { get; set; }
    public string SearchTerms { get{return "hello"}; set; }
    public float Distance { get; set; }
}

它返回数据。

我正在和 Fiddler 通话:

POST http://127.0.0.1:8835/testing/NewHTTP/1.1 用户代理:提琴手主机:127.0.0.1:8835 内容长度:122 内容类型:应用程序/json;字符集=utf-8

[{"Latitude":43.34,"Longitude":45.234,"Category":"尚未设置","SearchTerms":"Downtown","Distance":12.234}]

在我看来,好像我的课程没有被实例化。我在集合中创建了一些虚拟代码

{set{int i = 1;};

但是如果我在集合中创建一个断点,它永远不会被调用。

我究竟做错了什么?

4

1 回答 1

0

您需要将 DataContract 和 DataMember 属性添加到您的数据模型...

请参阅http://msdn.microsoft.com/en-us/library/ms733127.aspx

[DataContract]
public class WhereItsAt
{
    [DataMember] public float Latitude { get; set; }
    [DataMember] public float Longitude { get; set; }
    [DataMember] public string Category { get; set; }
    [DataMember] public string SearchTerms { get{return "hello"}; set; }
    [DataMember] public float Distance { get; set; }
}
于 2012-05-01T19:05:35.647 回答