2013-10-14 103 views
1

我有一個使用控制檯應用程序連接到的其他WCF服務。控制檯應用程序下載文件。小文件正常工作。對於較大的文件,我得到以下錯誤:在wcf rest服務的客戶端中設置MaxReceivedMessageSize

The maximum message size quota for incoming messages (65536) has been exceeded. 
To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element 

這是我在客戶端控制檯應用程序的配置文件。

<configuration>  
<system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding maxReceivedMessageSize="2000000" 
        maxBufferSize="2000000"> 
      <readerQuotas maxStringContentLength="2000000"/> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 
</configuration> 

的WCF配置如下:

<webHttpBinding> 
     <binding name="MyTestBinding" maxReceivedMessageSize="10000000" maxBufferPoolSize="10000000" maxBufferSize="10000000" transferMode="Buffered"> 
      <readerQuotas maxDepth="10000000" maxArrayLength="10000000" maxBytesPerRead="10000000" maxNameTableCharCount="10000000" maxStringContentLength="10000000" /> 
      <security mode="Transport"> 
       <transport clientCredentialType="None" /> 
      </security> 
     </binding> 
    </webHttpBinding> 
我使用WebChannelFactory連接到服務

。什麼可能是錯的?

+0

WCF支持MaxRecivedMessageSize是2147483647.You必須將其設置兩側的客戶端和service.i喜歡看你的WCF配置設置 –

+0

嘗試將服務行爲添加到您的服務配置中 – Sajeetharan

+0

也顯示正在使用的端點。 – zimdanen

回答

2

嘗試在您的客戶端配置文件中爲webHttpBinding指定一個名稱,並使用WebChannelFactory Constructor (String, Uri)引用它。這需要在綁定配置名稱的字符串和服務的URI:

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <webHttpBinding name="MyWebHttpBinding"> 
     <binding maxReceivedMessageSize="2000000" 
       maxBufferSize="2000000"> 

basicHttpBinding是默認爲http結合,所以除非你覆蓋的是,在客戶端配置的protocolMapping部分,你會得到默認值爲httpBinding

隨着name屬性集,然後你可以得到一個工廠實例是這樣的:

WebChannelFactory<IContract> factory = new WebChannelFactory<IContract>("MyWebHttpBinding", new Uri("service address")); 
+0

謝謝。但是,我必須在創建工廠實例時提供一個綁定對象。該字符串是一個端點配置名稱。 – user20358

+0

我在我的java應用程序中使用c#wcf服務,在那裏我配置了這個MaxBufferSize –

+0

@ R.Anandan - 這將在您的Java客戶端或代碼中的cofig中。我建議你用相關信息發佈這個新問題。 – Tim