WCF返回类型:JsonResult

时间:2014-11-25 12:33:48

标签: c# json wcf

我希望服务以下列JSON格式(不是字符串)返回数据:

{{name:"ABC"},{Id:"ABC123"}}

我正在尝试从WCF函数返回JsonResult。我创建了一个IList<Dictionary>来存储从数据库中获取的数据,然后使用Controller类的JsonResult函数将其转换为Json()。我希望在使用Fiddler测试时从此服务接收JSON数据,而我收到504结果说:

  

&#34; [Fiddler] ReadResponse()失败:服务器没有返回响应   对于这个请求。服务器返回0个字节。&#34;

可能是什么原因?

2 个答案:

答案 0 :(得分:0)

为什么你在wcf中使用mvc的JsonResult,这是一个要求吗?您可以返回Json.NET的JObject对象而不是JsonResult,或者像这样的动态对象:

public dynamic GetData()
{
     dynamic objReturn = new ExpandoObject();
     objReturn.Id = "ABC123";
     objReturn.name = "ABC";
     JavaScriptSerializer objSerializer = new JavaScriptSerializer();
     return objSerializer.Serialize(objReturn);
}

答案 1 :(得分:0)

设置跟踪日志,您可以在traceviewer中打开该日志以查找有关错误的更多信息。更改配置文件,如以下MSDN文章http://msdn.microsoft.com/en-us/library/ms733025%28v=vs.110%29.aspx

中所示

不确定这是否有帮助,但是当我返回一个对象或一个列表时,我创建了一个我想要返回的类型的对象,确保我已经包含了DataContract和DataMember属性来序列化它。例如:

[DataContract]
public class User
{      
    [DataMember(Name="email")]
    public string EmailAddress { get; set; }


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

创建服务接口,返回用户对象列表

    [WebGet(UriTemplate = "/users", ResponseFormat = WebMessageFormat.Json)]
    List<User> GetUsers(); 

实现界面,当您返回列表时,它将透明地序列化为JSON

public List<User> GetUsers()
{
    List<User> userList = new List<User>();   
    //Create your user list here

    return userList;
}