2011-07-20 41 views
0

所以我遇到了我正在使用的WCF服務的經典「超出最大消息大小」錯誤。奇怪的是,設置所有的消息大小設置的方式,因爲其他帖子的建議似乎沒有做任何事情;我仍然得到同樣的錯誤。另一個WCF MaxMessageSize錯誤

這是我的服務器配置。客戶端不是.net,所以沒有客戶端配置。

任何想法?

<services> 
     <service name="MyService" behaviorConfiguration="HTTPMetadataBehavior"> 
      <endpoint address="http://localhost:2624" binding="webHttpBinding" 
       bindingConfiguration="WebHttpSettings" contract="IMyService" /> 
      <endpoint address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
     </service> 
    </services> 
<behaviors> 
     <serviceBehaviors> 
     <behavior name="HTTPMetadataBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" 
      httpGetBindingConfiguration="" />    
      <serviceDebug includeExceptionDetailInFaults="true" />   
     </behavior> 
     </serviceBehaviors>   
    </behaviors> 
     <bindings> 
      <webHttpBinding> 
       <binding name="WebHttpSettings" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">     
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
       </binding> 
      </webHttpBinding> 
     </bindings> 
+0

順便說一句,你可以刪除MEX端點作爲REST服務不;噸支持WS-元 –

+0

謝謝你的提示。 – Amasuriel

回答

0

好的這個修復程序不適用於所有人,但對我來說,我通過省略名稱和工作使我的配置成爲webHttp的默認配置。這是修改後的配置。

<services> 
     <service name="MyService" behaviorConfiguration="HTTPMetadataBehavior"> 
      <endpoint address="http://localhost:2624" binding="webHttpBinding" 
       bindingConfiguration="" contract="IMyService" /> 
     </service> 
    </services> 
<behaviors> 
     <serviceBehaviors> 
     <behavior name="HTTPMetadataBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" 
      httpGetBindingConfiguration="" />    
      <serviceDebug includeExceptionDetailInFaults="true" />   
     </behavior> 
     </serviceBehaviors>   
    </behaviors> 
     <bindings> 
      <webHttpBinding> 
       <binding name="" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">     
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
       </binding> 
      </webHttpBinding> 
     </bindings> 
0

您需要的服務行爲多了一個設定:

<dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
+0

不幸的是沒有工作。我仍然收到傳入郵件的最大郵件大小限額(65536)已被超出。要增加配額,請在適當的綁定元素上使用MaxReceivedMessageSize屬性。在跟蹤日誌中。 – Amasuriel

+1

您必須在服務器和客戶端上執行此操作。 – flayn

+0

客戶端不是.net。 – Amasuriel

0

我的猜測是你的實際服務名稱不是爲MyService通過,而它是在一個命名空間。

假設你使用的是.NET 4的實際服務是撿了默認的缺省端點綁定設置或65536服務元素中更改名稱是服務實現類的完全限定類型名稱

+0

實際文件使用完全限定名稱;我只是粉刷他們的職位。此外,這些服務適用於較小的數據集,所以我知道基本配置的工作原理。 – Amasuriel

+0

對於默認端點(假設您使用的是WebServiceHost),該代碼適用於較小的數據集。您是否使用VB.NET或C#,因爲VB.NET也有服務的完全限定名稱中的項目名稱 –

+0

將端點設置爲需要傳輸安全性 - 如果您實際使用該部分配置 –