发送包含照片的记录表超出配额

时间:2015-05-07 07:48:53

标签: wcf wcf-data-services wcf-binding

代码设置

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding>
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
<basicHttpBinding>
<binding maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="SilverlightApplication2.Web.EpriscriptionSrv">
<endpoint address="" binding="customBinding"
contract="SilverlightApplication2.Web.EpriscriptionSrv" />
<endpoint address="mex" binding="customBinding" contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>

显示错误 救命 enter image description here

访问但未回答

Wcf-The maximum message size quota for incoming messages (65536) has been exceeded?

enter image description here

2 个答案:

答案 0 :(得分:2)

您的服务主机配置文件与客户端应用程序的配置不同。

实际上,当放置在服务器端web.config中时,增加maxReceivedMessageSize并没有任何影响。将您的服务添加为另一个应用程序中的引用时。它将生成一个客户端配置,就像您在上一个屏幕截图中看到的那样。但是,这通常会默认为较小规模Web服务的典型消息大小。

要接收较大的邮件,您必须增加客户端配置的maxReceivedMessageSize属性。

由于您目前正在使用WCF测试客户端,因此我将提供一些截图,说明如何在那里进行:

  1. 启动WCF测试客户端时。向下导航到“配置文件”,右键单击,然后选择“使用SvcConfigEditor编辑”。
  2. 在新配置编辑器窗口中:展开“Bindings”菜单并选择绑定。然后编辑MaxReceivedMessageSize属性。 Service Config Utility screen
  3. 点击文件 - &gt;保存并关闭编辑器。
  4. 在WCF测试客户端上。现在应该有一个新的弹出窗口,说明配置已由外部编辑器修改,并提示您重新加载。单击“是”以执行此操作。 WCF Test Client Reload Menu
  5. WCF测试客户端中的“配置文件”菜单现在应该反映新的更改。现在正常在WCF测试客户端中继续进行测试调用。
  6. 部署此应用程序时。您必须确保客户端的配置文件在maxReceivedMessageSize属性中具有适当的值才能使用您的服务,但这应该让测试客户端暂时运行。

答案 1 :(得分:1)

您也可以尝试增加自定义绑定的阅读器配额值。

<bindings>
  <customBinding>
    <binding>
      <binaryMessageEncoding>
        <readerQuotas maxDepth="2147483647"
                      maxStringContentLength="2147483647"
                      maxArrayLength="2147483647"
                      maxBytesPerRead="2147483647"
                      maxNameTableCharCounts="2147483647" />
        </readerQuotas>
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
    </binding>
  </customBinding>

此外,您可能希望通过以下行为增加maxItemsInGraph的{​​{1}}属性:

DataContractSerializer