2010-11-08 94 views
1

我最近成立了一個WCF服務Resful實體框架4.0 它與XML完美的,但是當我嘗試在JSON格式返回它我無法返回JSON數據,WCF Resful服務.NET 4.0

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

也許顯示你的代碼會給我們更多的想法? – 2010-11-08 13:08:12

+0

+1同樣的問題,你有它工作的DJ? – andy 2010-11-08 23:35:29

+0

添加代碼,我猜這可能是一個設置問題,但有點失去了我應該看的方向 – 2010-11-09 02:36:37

回答

3

通過使用服務跟蹤查看器,實際上有許多方法來解決問題。 This link幫助了我。 我終於看到了問題,但是被問題堆積了。

'類型'xxx.DataEntity.AppView'無法序列化爲JSON,因爲它的IsReference設置爲'True'。 JSON格式不支持引用,因爲沒有用於表示引用的標準格式。要啓用序列化,請禁用該類型的IsReference設置或該類型的適當父類。

我會爲此開始一個新問題。

0

當我沒有設置一個對象的參數時,我遇到了同樣的問題。 比如我有一個類:

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

如果參數1或param2爲空或minValue(最小值)(爲DateTime),所以我得到了這個問題。當我設置所有參數時,問題就消失了。