2009-08-05 9 views
3

オブジェクトをパラメータとして受け取るWCFサービス操作があります。このオブジェクトは、とりわけbyte []プロパティを持ちます。クライアントプログラムは、svcutil生成プロキシを使用してこのサービス操作を呼び出します。WCF Webサービスオペレーションは、50kbバイトを超えると例外をスローします。[]

クライアントプログラムがオブジェクトのbype []プロパティに50Kbを超えるサイズを設定すると、次のエラーがスローされます。 (バイト[]に割り当てられた50KBより小さいイメージサイズでは動作します)。

私は取得していますエラーは次のとおりです。

System.ServiceModel.ProtocolExceptionは、未処理だった メッセージ=「リモートサーバーが予期しない応答が返さ:(400)不正な要求を」

これは私のサーバー側configです:

<system.serviceModel> 
<diagnostics> 
    <messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false" 
    logMessagesAtTransportLevel="false" /> 
</diagnostics> 
<services> 
    <service behaviorConfiguration="ProjectABC.ABCServiceBehavior" 
    name="ProjecXAPI.ContentService"> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="testContentBinding" 
     bindingName="testContentBinding" contract="ProjectABC.IABCtService" /> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="higherMessageSize_MEX" 
     contract="IMetadataExchange" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
     <behavior name="ProjectABC.ABCServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
        <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="testContentBinding" messageEncoding="Mtom" transferMode="Buffered"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"></security> 
    </binding> 
    </basicHttpBinding> 
    <mexHttpBinding> 
    <binding name="higherMessageSize_MEX"/> 
    </mexHttpBinding> 
</bindings> 
</system.serviceModel> 

これは私のクライアント側configです:

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
    <binding name="testContentBinding_IContentService" closeTimeout="01:01:00" 
     openTimeout="01:01:00" receiveTimeout="01:10:00" sendTimeout="01:01:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

<client> 
    <endpoint address="http://localhost:2361/Content/ContentService.svc" 
      binding="basicHttpBinding" bindingConfiguration="testContentBinding_IContentService" 
      contract="IContentService" name="testContentBinding_IContentService" /> 
</client> 
</system.serviceModel> 

答えて

3

[OK]を、私はここで自分の質問に答えるのです - ちょうど見つけ

をサーバー側の設定 "maxReceivedMessageSize"に設定があります。これをサーバが受け入れる最大サイズに設定したら、あなたは準備が整いました。

おかげ&よろしく、 アジャイ

0

は、ここで問題の解決策です。サーバー側の設定には、以下のようにいくつかの設定が必要です。

<basicHttpBinding> 
<binding name="ExampleBinding" transferMode="Buffered" messageEncoding="Mtom" maxReceivedMessageSize="104857600" maxBufferPoolSize="524288"> 
    <readerQuotas maxDepth="32" maxStringContentLength="104857600" maxArrayLength="104857600" 
     maxBytesPerRead="4096" maxNameTableCharCount="104857600" /> 
    <security mode="None"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
    <message clientCredentialType="UserName" algorithmSuite="Default"/> 
    </security> 
</binding> 
</basicHttpBinding>