zoukankan      html  css  js  c++  java
  • WCF错误:413 Request Entity Too Large

     

    在我们用WCF传输数据的时候,如果启用默认配置,传输的数据量过大,经常会出这个错误。

    WCF包含服务端与客户端,所以这个错误可能出现在服务端返回数据给客户端,或客户端传数据给服务端时。

    1. 服务端返回数据给客户端报错

    在客户端配置文件中,主要是配置maxReceivedMessageSize

    复制代码
    <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="ServiceProxyBinding" closeTimeout="00:10:00" receiveTimeout="00:10:00"
              sendTimeout="00:10:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
              <readerQuotas maxStringContentLength="134217728" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:5239/AHMTService/PartService.svc"
            binding="basicHttpBinding" bindingConfiguration="ServiceProxyBinding"
            contract="UniCloud.ServiceContracts.IPartService" name="IPartService" />
        </client>
      </system.serviceModel>
    复制代码

    2 客户端传数据给服务端报错

     修改服务端web.config,主要也是配置maxReceivedMessageSize

    复制代码
    <system.serviceModel>
        <services>
          <!--DecodeService 服务端配置 增加接收文件大小-->
          <service name="UniCloud.Services.DecodeService" behaviorConfiguration="MyServiceBehaviour" >
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MyServiceBinding" contract="UniCloud.ServiceContracts.IDecodeService">
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:5239/AHMTService"/>
              </baseAddresses>
            </host>
          </service>
        </services>
        <bindings>
          <basicHttpBinding>
            <binding name="MyServiceBinding"  closeTimeout="00:10:00" receiveTimeout="00:20:00" sendTimeout="00:20:00"
    maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
              <security mode="None"></security>
            </binding>
          </basicHttpBinding>
        </bindings>
        <behaviors>
          <serviceBehaviors>
            <behavior name="MyServiceBehaviour">
              <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
              <serviceDebug includeExceptionDetailInFaults="true" />
              <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
    复制代码

    其实要修改所有的服务,不管是服务端还是客户端,Binding那边增加一个没有设置名字的默认配置就OK了

     <binding   closeTimeout="00:10:00" receiveTimeout="00:20:00" sendTimeout="00:20:00"
    maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
  • 相关阅读:
    SQLServer中重建聚集索引之后会影响到非聚集索引的索引碎片吗
    设计表的时候,对于自增列做物理主键使用的一点思考
    MySQL慢查询日志相关的配置和使用。
    Python文件操作---合并文本文件内容
    浅析SQL Server在可序列化隔离级别下,防止幻读的范围锁的锁定问题
    从一个简单的约束看规范性的SQL脚本对数据库运维的影响
    (译)内存沉思:多个名称相关的神秘的SQL Server内存消耗者。
    初试Python语法小试牛刀之冒泡排序
    浅析MySQL中的Index Condition Pushdown (ICP 索引条件下推)和Multi-Range Read(MRR 索引多范围查找)查询优化
    MySQL执行计划extra中的using index 和 using where using index 的区别
  • 原文地址:https://www.cnblogs.com/johnblogs/p/8918929.html
Copyright © 2011-2022 走看看