невозможно вернуть данные json, WCF Resful Service .NET 4.0 - PullRequest
2 голосов
/ 08 ноября 2010

Я недавно установил WCF Resful Service с Entity Framework 4.0 Он отлично работает с 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.

Любые идеи ??

спасибо заранее

Edit: Кодекс вполне нормальный, на самом деле я попробовал два способа сделать это, но не повезло.

Жесткий код ResponseFormat Way:

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

Динамически заданный путь отклика:

    [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 ]

4 голосов
/ 01 декабря 2010

Используя Service Trace Viewer , на самом деле существует несколько способов решения проблемы. Эта ссылка помогла мне.Я наконец-то вижу проблему, однако накопление выигрыша с этой проблемой.

'Тип' xxx.DataEntity.AppView 'не может быть сериализовано в JSON, потому что его параметр IsReference имеет значение TrueФормат JSON не поддерживает ссылки, потому что нет стандартизированного формата для представления ссылок.Чтобы включить сериализацию, отключите параметр IsReference для типа или соответствующего родительского класса этого типа. '

Я начну новый вопрос для этого.

1 голос
/ 18 января 2012

У меня была такая же проблема, когда я не установил один из параметров объекта. Например у меня есть класс:

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

И если param1 или param2 были нулевыми или minValue (для DateTime), то я получил проблему. Когда я устанавливаю все параметры, проблема исчезает.

...