无法返回json数据,WCF Restful Service .NET 4.0

时间:2010-11-08 13:06:41

标签: wcf rest entity-framework-4

我最近使用Entity Framework 4.0设置了WCF Resful Service 它完全适用于XML,但是当我尝试以json格式返回时,我得到了

HTTP/1.1 504 Fiddler - Receive Failure
Content-Type: text/html
Connection: close
Timestamp: 01:11:06.453

ReadResponse() failed: The server did not return a response for this request.

任何想法?

提前致谢

修改 该守则很正常,实际上我尝试了两种方式,但没有运气。

硬代码ResponseFormat方式:

[OperationContract]
        [WebInvoke(Method = "GET",
            BodyStyle = WebMessageBodyStyle.Wrapped,
            ResponseFormat = WebMessageFormat.Json,
            UriTemplate = "Deal/{id}")]
        Deals XMLDealDetail(string id);

动态设置ResponseFormat方式:

    [OperationContract]
            [WebInvoke(Method = "GET",
                BodyStyle = WebMessageBodyStyle.Wrapped,
                ResponseFormat = WebMessageFormat.Json,
                UriTemplate = "Deal/{id}/{format}")]
            Deals XMLDealDetail(string id, string format);

    public Deals XMLDealDetail(string id, string format)
            {
                OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse;

                if (format.ToLower() == "json")
                {
                    context.Format = WebMessageFormat.Json;
                    context.ContentType = "application/json";
                }
                else
                {
                    context.Format = WebMessageFormat.Xml;
                }
//Deals is a Entity Class defined in edmx file
                    Deals deal = DealsServices.GetById(id);
                    return deal;

            }

我错过了哪里?

2 个答案:

答案 0 :(得分:4)

通过使用服务跟踪查看器,实际上有很多方法可以解决问题。 This link帮助了我。 我终于看到了这个问题,然而这个问题正在增加。

'类型'xxx.DataEntity.AppView'无法序列化为JSON,因为其IsReference设置为“True”。 JSON格式不支持引用,因为没有用于表示引用的标准化格式。要启用序列化,请在类型或相应类型的父类上禁用IsReference设置。'

我将为此开始一个新问题。

答案 1 :(得分:1)

当我没有设置对象的一个​​参数时,我遇到了同样的问题。 例如,我有一个班级:

public class Obj {
   int param1 { get; set; }
   int param2 { get; set; }
};

如果param1或param2为null或minValue(对于DateTime),那么我就遇到了问题。当我设置所有参数时,问题就会消失。