Ошибка запроса Fiddler к WCF с 504 ReadResponse (): сервер не вернул ответ на этот запрос


Соответствующий Служебный Код:

[WebGet(BodyStyle = WebMessageBodyStyle.WrappedResponse, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate="products")]
public Product[] GetAllProduct()
{
    return ProductProvider.Instance.GetAllProducts();
}

[OperationContract]
Product[] GetAllProduct();

Соответствующий Конфигурационный Код:

<?xml version="1.0"?>
<configuration>
<connectionStrings>
    <add name="TestEntities" connectionString="metadata=res://*/ProductEntityDataModel.csdl|res://*/ProductEntityDataModel.ssdl|res://*/ProductEntityDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=PCMSSQL2008;initial catalog=Test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
<system.serviceModel>
    <services>
        <service name="Service.Default">
            <endpoint address="http://localhost:1651/Default.svc" binding="webHttpBinding" contract="Service.IDefault"/>
        </service>
    </services>
    <behaviors>
        <endpointBehaviors>
            <behavior>
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
</system.serviceModel>
<system.web>
    <compilation debug="true"/>
</system.web>
</configuration>

Соответствующий Запрос Скрипача

Запрос Скрипача

6 2

6 ответов:

В прошлом у меня были проблемы с URITemplate. Можете ли вы попробовать:

[WebGet(BodyStyle=WebMessageBodyStyle.WrappedResponse, ResponseFormat=WebMessageFormat.Json)]
public Product[] products()
{
    return ProductProvider.Instance.GetAllProducts();
}

[OperationContract]
Product[] products();

Это может произойти из-за свойства типа DateTime в вашем классе, которое является DateTime.MinValue (0001-01-01) по умолчанию.

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

Также следует обратить внимание на любое свойство, которое не может быть непосредственно сериализовано в JSON, например TimeSpan, DateTimeOffset и т. д.

У нас та же проблема. Я нашел что-то соответствующее ответу здесь:

WCF DataContractSerializer имеет предел 65536 объектов в графе объектов

Надеюсь, это поможет.

У меня была аналогичная проблема с Fiddler (v2. 3. 9. 3) с сервисом, использующим BasicHttpBinding; я смог исправить ее, изменив transferMode на привязке на Streamed (по умолчанию Buffered), а затем поставил Fiddler в потоковый режим (убедитесь, что кнопка "поток" на панели инструментов находится в выбранном/нажатом состоянии).

# Крис

Я только что столкнулся с этим, и проблема заключалась в ограничении графа объектов, упомянутом в ссылке, которую опубликовал пользователь 72213.

Изменение этого предела с помощью ServiceBehaviorAttribute.MaxItemsInObjectGraph собственность сделала этот трюк за меня.

Вы также можете попробовать <dataContractSerializer>'S maxItemsInObjectGraph атрибут, но использование атрибута было более удобным в моем случае.

Я получал эту проблему, когда возвращаемый объект dateTime был null. Он отлично работает при отладке и создает проблемы при обессоливании. Один из способов-сделать свой dateTime null способным DateTime? и он будет десериализован правильно.

Надежда полезна для кого-то.