WCF 返回类型:JsonResult

本文关键字:JsonResult 返回类型 WCF | 更新日期: 2023-09-27 18:31:57

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

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

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

"[Fiddler] ReadResponse() 失败:服务器未返回响应 对于此请求。服务器返回 0 个字节。

可能是什么原因?

WCF 返回类型:JsonResult

为什么在 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);
}

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

不确定这是否有帮助,但是当我返回一个对象或列表时,我会创建一个我要返回的类型的对象,确保 Ive 包含 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;
}