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 中使用 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;
}