2015-11-12 43 views
1

這似乎是一個非常常見的問題 - 我已閱讀了大量關於SO和其他網站的評論。問題是,即使在修改我的配置後,發送〜50K有效負載時仍然出現413錯誤。RESTful WCF(4.5.2)服務錯誤與「413實體請求太大」

這裏的服務配置的相關部分...

<system.serviceModel> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" /> 
<services> 
    <service name="Sync.Inbound" behaviorConfiguration="serviceWebConfiguration"> 
    <endpoint address="" binding="webHttpBinding" bindingName="defaultRest" behaviorConfiguration="web" contract="Sync.IInbound" /> 
    </service> 
</services> 
<bindings> 
    <webHttpBinding> 
    <binding name="defaultRest" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" transferMode="Streamed"> 
     <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="web"> 
     <webHttp /> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
    </behavior> 
    <behavior name="json"> 
     <enableWebScript /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="serviceWebConfiguration"> 
     <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

我從一個簡單的C#控制檯應用程序調用此通過的HttpWebRequest ...任何人測試看不到我米在服務配置缺少?

回答

1

您需要將bindingConfiguration屬性設置爲"defaultRest"服務端點元素,否則服務將無法使用指定的綁定配置塊。

上面的示例顯示了「bindingName」屬性中的綁定配置名稱,而不是「bindingConfiguration」屬性。 因此,您需要更改:

<endpoint ... bindingName="defaultRest" 

到:

<endpoint ... bindingConfiguration="defaultRest" 

例子:

<system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" /> 
    <services> 
     <service name="Sync.Inbound" behaviorConfiguration="serviceWebConfiguration"> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="defaultRest" ... 
     </service> 
    </services> 
    <bindings> 
     <webHttpBinding> 
     <binding name="defaultRest" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" transferMode="Streamed"> 
      <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 

參考:
https://msdn.microsoft.com/en-us/library/ms733099(v=vs.110).aspx
bindingConfiguration vs bindingName

+1

謝謝你西摩!完美的作品! –

0

您可能需要將maxItemsInObjectGraph更改爲您的服務dataContractSerializer以允許通過更大的收藏。

<serviceBehaviors> 
    <behavior name="SecureServiceBehavior"> 
    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/> 
    <serviceDebug includeExceptionDetailInFaults="true"/> 
    <dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="2147483647"/> 
    <serviceTimeouts transactionTimeout="00:03:00"/> 
    <serviceThrottling maxConcurrentCalls="10" maxConcurrentSessions="10" maxConcurrentInstances="10"/> 
    </behavior> 
</serviceBehaviors>