2016-03-30 5 views
0

この問題に関連する質問のほとんどを見てきましたが、解決策はありません。私は以下のとおりいるバインド...私は試してみましたWCFからRequest Entity To Largeが依然として受信されています

<bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_service" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://.../service.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_service" 
      contract="HH.service" name="BasicHttpBinding_service" /> 
    </client> 

サーバー

<basicHttpBinding> 
    <binding name="UploadSoap" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="Transport"></security> 
    </binding> 
</basicHttpBinding> 
<webHttpBinding> 
    <binding name="UploadSoapWeb" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
</webHttpBinding> 
<client> 
    <endpoint address="https:.../upload.asmx" binding="webHttpBinding" bindingConfiguration="UploadSoapWeb" contract="Upload.UploadSoap" name="UploadSoap" /> 
</client> 

クライアントの両方の基本的な結合およびウェブは、結合が、私はよエラーメッセージが表示されます。

おかげ

+0

サービスをIISでホストしていますか、それとも自己ホストですか? IISの場合、IISのバージョンは? –

+0

私はIIS 8.5を使用しています – Gary

+0

質問でサーバーバインディングを更新して、サービスエンドポイントの構成も表示できますか。 –

答えて

1

サービスの明示的なバインディングを設定していないため、デフォルトの設定値ではデフォルトのbasicHttpBindingになります。 maxReceivedMessageSizeのデフォルト値は64KBです。

maxReceivedMessageSizeはメッセージ受信者にのみ適用され、メッセージ送信者には適用されません。大きなメッセージを送信する場合、クライアントはこれらの値を設定する必要はありません。

は、サーバー側が次への結合を更新します。

<basicHttpBinding> 
    <!-- Unnamed (default) binding--> 
    <binding maxBufferPoolSize="2147483647" 
      maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      messageEncoding="Text" /> <!-- Consider using Mtom if you're transfering binary data--> 
    <binding name="UploadSoap"> 
     <security mode="Transport"></security> 
    </binding> 
</basicHttpBinding> 
<client> 
    <endpoint address="https:.../upload.asmx" 
       binding="basicHttpBinding" 
       bindingConfiguration="UploadSoap" 
       contract="Upload.UploadSoap" name="UploadSoap" /> 
</client> 

無名の結合はbindingConfigurationなしbasicHttpBindingを使用して、任意のエンドポイント、サーバーまたはクライアントのデフォルト値を提供します。

私はあなたのクライアントが応答で大きなメッセージを受け取っていないと仮定しました。

+0

これはうまくいきました、ありがとうございました。なぜ私は分からない。元のステートメントにはbindingConfiguration = "UploadSoap"があり、その上にバインディングがありましたが、セキュリティステートメントが含まれていました。 – Gary

0

あなたがサービスから413エラーを受信して​​いる場合は、問題はあなたのサービスの設定を明示的に定義されたサービスのエンドポイントを持っていないことのように見えるので、あなたがきたバインディング設定作成されたものは使用されていません。

あなたはこのように、あなたのサービス設定に<services>セクションを追加する必要があります。

<services> 
    <service name="YourServiceName"> 
    <endpoint address="" binding="basicHttpBinding" 
       bindingConfiguration="UploadSoap" 
       contract="YourContractName" /> 
    </service> 
</services> 

として、WCFサービスのためのあなたの定義された結合構成を使用するように指示し、何もすることによってので、現在掲載されていません既定値(既定値)を使用して既定の既定のWCFはbasicHttpBindingを使用します。

<binding maxBufferPoolSize="2147483647" 
     maxBufferSize="2147483647" 
     maxReceivedMessageSize="2147483647" 
     messageEncoding="Text"> 
    <readerQuotas maxDepth="2147483647" 
       maxStringContentLength="2147483647" 
       maxArrayLength="2147483647" 
       maxBytesPerRead="2147483647" 
       maxNameTableCharCount="2147483647" /> 
    <security mode="Transport"></security> 
</binding> 

私は、一般に、第1の方法を好む:この問題を解決するために

第二の方法は、このように、バインディング構成を定義し、name属性を省略することにより、結合のタイプのデフォルトとして設定することです(明示的なサービスエンドポイントを設定する)、どちらかが機能するはずです。

+0

basicHttpBindingから名前を削除して、bindingConfigurationをエンドポイントから削除すると、エンドポイントが見つからないというエラーが表示されます。 – Gary

関連する問題