2012-01-06 7 views
2

私はWCFを初めて使い、サービスが受ける構成の迷路を頭で捉えようとしています。私はデフォルトのmaxReceivedMessageSizeより大きいテーブルのエクスポートを返すことができる休憩サービスを持っています。だから私はこのサービス/エンドポイントのための設定と遊ぶことを試みていると私はどこにも行きません。下に私が取り組んでいるものの要点があれば、私は何が欠けていますか? ListをJSONまたはXMLとして返すだけで、デフォルトのしきい値を返す必要があります。RESTfulサービスでのwebHttpBindingのバインドとコンフィグレーション

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

<services> 
    <!-- defin service --> 
    <service behaviorConfiguration="EPRestBehavior" name="EPRestDNS"> 
    <endpoint address="" 
       bindingConfiguration="ApiExportBinding" 
       binding="webHttpBinding" 
       contract="IDNSRestService" /> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="EPRestBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 

    ... 

</behaviors> 
<bindings> 
    <!-- Customizations for REST service --> 
    <webHttpBinding> 
    <binding name="ApiExportBinding" maxReceivedMessageSize="10485760" 
        maxBufferPoolSize="10485760" maxBufferSize="10485760" closeTimeout="00:03:00" 
        openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00"> 
     <readerQuotas maxDepth="32" maxStringContentLength="10485760" 
         maxArrayLength="10485760" maxBytesPerRead="10485760" /> 
     <security mode="None" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

UPDATE 1 私はその設定のすべてを削除し、既存のwebHttpEndpointセクションで何かsimperを試してみた:同じ結果と

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="1000000000" /> 
    </webHttpEndpoint> 
</standardEndpoints> 

HTTP/1.1 502 Connection reset by peer

答えて

3

これはすべてWCFがひどい理由です。最後に私はサーバー上にsvclogを作成し、実際の問題はデフォルトのオブジェクトグラフの限界に達していました。実装に必要な新しい制限を追加しました。それがそれです。そのような愚かなことのためだけに7時間以上。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, MaxItemsInObjectGraph = 2147483646)] 
2

例外はサービスまたはクライアント側で発生しますか。よくある間違いは、サーバー上の値を変更するが、クライアント上でも変更を忘れることです。

+0

良い点は、クライアント側です。 Fiddlerを使用すると、私は502接続のリセットエラーが発生することがわかりますが、サーバー上またはデバッグ中に例外がスローされることはありません。それは、私がクライアントに「ちょっと、まともなデータを取得しようとしていて、1秒間ですべてを取得しようとしている」と知っている何かが欠けているようなものです。 – BryanGrimes

+0

あなたは例外を投じることはありませんか? – KMan

+0

いいえ、何もありません。 Fiddlerとブラウザのクライアントエラーだけ。 – BryanGrimes