2011-07-19 20 views
2

関連サービスコード:フィドラー要求は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=PC\MSSQL2008;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> 

関連フィドラーリクエスト

Fiddler Request

+0

私はそれが重要であるとは想像できませんでしたが、あなたはあなたの指示に 'ResponseFormat = JSON'を二度書いています。 – Joe

+0

ああ、1つはRequestFormatで、もう1つはResponseFormatです。 –

+0

私はサービスを介してデバッグすることができ、サービスは例外をスローしていないことに言及することを忘れました。私は文字列を返すことができますが、それは正常に動作しますが、私はオブジェクトを返そうとすると、失敗したときです。オブジェクトは[Serializable()]と[DataContractSerializable(IsReference = true)]の両方です –

答えて

2

私はワットの問題を持っていました以前はURITemplateでした。試してみることができますか:

+0

両方のWrappedResponseを試してから、URiTemplateを削除し、それをFiddlerの関数名に置き換えました。 –

+1

@ Kant、私はいくつかの可能な解決法でこの記事を見つけました:http://geekswithblogs.net/JamesFleming/archive/2011/03/09/wcf-http-504-working-on-a-mystery.aspx – Joe

+0

@Joeあなたのリンクは、私がトレースを使って問題を特定するのを助けてくれました。これは、シリアル化に失敗したことが判明しました。 –

0

これは、デフォルトでDateTime.MinValue(0001-01-01)というクラスのDateTime型プロパティが原因である可能性があります。

私はまったく同じ問題を抱え、日付をより大きな値に設定することで解決しました。

また、あなたは、などのTimeSpan、のDateTimeOffset

0

私は、BasicHttpBindingを使用するサービスでFiddler(v2.3.9.3)と同様の問題がありました。バインドのtransferModeStreamed(デフォルトはBuffered)に変更し、Fiddlerをストリーミングモードにして修正できました(ツールバーの[ストリーム]ボタンが選択/押された状態になっていることを確認してください)。

#クリス

0

私はこのに走ったとの問題が掲載さuser72213リンクに記載されたオブジェクトグラフの上限でした。

ServiceBehaviorAttribute.MaxItemsInObjectGraphプロパティを使用してこの制限を修正することは、私にとって魅力的でした。

<dataContractSerializer>maxItemsInObjectGraph属性を試すこともできますが、私の場合はこの属性を使用する方が便利です。

0

返されたdateTimeオブジェクトがnullの場合、この問題が発生していました。デバッギング中にうまく動作し、脱塩中に問題が発生します。 あなたのdateTimeをnullにすることができますか?正しくデシリアライズされます。

希望は誰かに役立ちます。

関連する問題