我最近使用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;
}
我错过了哪里?
答案 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
),那么我就遇到了问题。当我设置所有参数时,问题就会消失。