Ошибка запроса 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="data source=PCMSSQL2008;initial catalog=Test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" 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 ответов:
В прошлом у меня были проблемы с 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>
'SmaxItemsInObjectGraph
атрибут, но использование атрибута было более удобным в моем случае.