3

WCF ベースの Web サービスに接続しています。特定のメソッドでは、入力にオブジェクト/構造のリストが含まれます。このリスト内のアイテムの数が特定の数を超えて増加するHTTP/1.1 400 Bad Requestと、SOAPUI を使用して同じものをテストしようとするとサービスが失敗します。次の変更を加えて web.config ファイルを変更してみました。

<httpRuntime maxRequestLength="2097151" />

   <binding name="basicHTTP" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00" maxReceivedMessageSize="4194304" maxBufferSize="98547" maxBufferPoolSize="258547">
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
   </binding>
4

2 に答える 2

3

設定により問題は解決しましたmaxReceivedMessageSize。最初のバインディングでは、が宣言および設定されbindingConfigurationていましたが、明示的に設定しませんでした。basicHttpBinding

そのためmaxReceivedMessageSize、バインディングの変更が適用されず、デフォルト設定の 64kb がアクティブでした。私はバインディングを次のように設定しました:

<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"
 name="AMS" bindingName="basicHttpBinding" contract="Entity.AccuchekMobility.Service.IAccuchekMobilityService" />

   <binding name="basicHttpBinding" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:02:00" sendTimeout="00:01:00" maxReceivedMessageSize="4194304" maxBufferPoolSize="524288" maxBufferSize="4194304">
于 2010-09-10T06:42:16.683 に答える
2

maxReceivedMessageSize はバイト単位であるのに対し、maxRequestLength はキロバイト単位であることに注意してください。また、バッファ転送の場合、バッファ サイズを最大メッセージ サイズと同じ値に設定します。失敗した入力の大きさは?

于 2010-09-03T14:09:06.637 に答える