远程服务器返回错误:(413)请求实体太大

时间:2013-03-11 13:37:47

标签: wcf

我知道这是一个多余的问题,我在上传超过100 KB的文件时收到错误。

  

远程服务器返回错误:(413)请求实体太大。

我将内容发布到WCF服务(64位环境)。我知道这应该通过管理maxReceivedMessageSize和相关行为来解决,但遗憾的是它没有。

以下是我的配置: -

客户端

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

 <behavior name="CandidateBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>

<endpoint address="http://localhost:62368/CandidateManagementService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICandidateManagementService" contract="MMJ.ServiceContracts.ServiceContract.ICandidateManagementService" name="BasicHttpBinding_ICandidateManagementService" behaviorConfiguration="CandidateBehavior" />

服务

<services>
      <service name="BasicHttpBinding_ICandidateManagementService" behaviorConfiguration="CandidateBehavior">
        <endpoint contract="MMJ.ServiceContracts.ServiceContract.ICandidateManagementService" binding="basicHttpBinding" address="" bindingConfiguration="BasicHttpBinding_ICandidateManagementService"/>
      </service>

我已经看到可能的一切,但仍然无法解决这个问题。也试过使用下面的配置,但仍然没有变化...

<serverRuntime uploadReadAheadSize="500000000" maxRequestEntityAllowed="500000000"/>

请帮忙!

服务绑定配置(与客户端相同)

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

以下更多见解是小提琴手发现: -

  

请求数:1个字节发送:85,719(标题:697;正文:85,022)   收到的字节数:10,129(标题:254;正文:9,875)

3 个答案:

答案 0 :(得分:3)

最后我的问题在经过多次努力后得到了解决。 我的服务配置有一个缺陷,它没有给我任何运行时或编译时错误,因为它甚至没有识别配置。

我的服务配置是: -

<services>
      <service name="BasicHttpBinding_ICandidateManagementService" behaviorConfiguration="CandidateBehavior">
        <endpoint contract="MMJ.ServiceContracts.ServiceContract.ICandidateManagementService" binding="basicHttpBinding" address="" bindingConfiguration="BasicHttpBinding_ICandidateManagementService"/>
      </service>

我有“Name”属性,它不是我的服务的完全限定名称,因此我使用的配置甚至没有被考虑,因此maxReceivedMessageSize默认为65KB。

我已经更新了它,它的工作就像一个魅力。

<services>
  <service name="MMJ.Services.CandidateManagementService">
    <endpoint contract="MMJ.ServiceContracts.ServiceContract.ICandidateManagementService" binding="basicHttpBinding" address="" bindingConfiguration="BasicHttpBinding_ICandidateManagementService"/>
  </service>

另外,请查看此post以获取更多参考。我知道这是一个愚蠢的错误,并感谢大家努力解决。

答案 1 :(得分:1)

您正在将数据发布到服务器,因此更新客户端设置无济于事。客户端不是接收大消息的客户端,服务器是。

答案 2 :(得分:0)

查看您的客户端端点:

bindingConfiguration不应该

bindingConfiguration="BasicHttpBinding_ICandidateManagementService"

而不是

bindingConfiguration="BasicHttpBinding_IAdminService"