2

私は WCF を初めて使用し、サービスが取る構成の迷宮を回避しようとしています。デフォルトよりも大きいテーブルのエクスポートを返すことができる残りのサービスがあります maxReceivedMessageSize。だから私はこのサービス/エンドポイントの構成をいじろうとしてきましたが、どこにも行きません。以下は、私が取り組んでいることの要点ですが、何が欠けていますか? List を JSON または XML として返すだけで、デフォルトのしきい値を超えて返せるようにする必要があります。

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

更新 1 その構成をすべて削除し、既存の webHttpEndpoint セクションで簡単なことを試しました。

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

同じ結果で。 HTTP/1.1 502 Connection reset by peer

4

2 に答える 2

3

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

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, MaxItemsInObjectGraph = 2147483646)]
于 2012-01-10T15:20:29.377 に答える
2

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

于 2012-01-06T14:22:32.993 に答える