我一直在玩创建基于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)都为null或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/New
HTTP / 1.1
用户代理:Fiddler
主持人:127.0.0.1:8835
内容长度:122
Content-Type:application / json;字符集= UTF-8
[{“纬度”:43.34,“经度”:45.234,“类别”:“尚未设置”,“SearchTerms”:“市中心”,“距离”:12.234}]
它看起来好像我的类没有被实例化。我在集合
中创建了一些虚拟代码{set {int i = 1;};
但如果我在集合中创建断点,则永远不会调用它。
我做错了什么?
答案 0 :(得分: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; }
}