将 JSON 发送到 C# WCF 服务会导致:请求实体太大

Posted

技术标签:

【中文标题】将 JSON 发送到 C# WCF 服务会导致:请求实体太大【英文标题】:Sending JSON to a C# WCF-service results in : Request Entity Too Large 【发布时间】:2018-12-03 20:19:31 【问题描述】:

我一直在四处寻找并检查了几个答案,但我仍然遇到同样的问题。

我有一个 WCF 服务,它以 JSON 格式接收数据,然后对其进行处理。 我有一个调用此服务的控制台应用程序。 但我一直遇到同样的问题:'远程服务器返回了意外响应:(413)请求实体太大。

在我的控制台应用程序配置中,我有:

 <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IPaymentBehaviorService"  allowCookies="true"
               maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
              <readerQuotas maxDepth="32" maxArrayLength="2147483647" maxStringContentLength="2147483647"/>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:50068/PaymentBehaviorService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPaymentBehaviorService"
            contract="PaymentBehaviorServiceService.IPaymentBehaviorService"
            name="BasicHttpBinding_IPaymentBehaviorService" />
    </client>
</system.serviceModel>

我的服务器配置:

 <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

正在发送的数据中的一行,如下所示:

 \"ReqId\":\"79\",\"TaxNbr\":\"889638963\",\"Amount\":\"29,4\",\"Invoice\":\"10/2330\",\"InvDate\":\"19/04/2018 0:00:00\",\"ExpDate\":\"19/04/2018 0:00:00\"        

我只能在一个请求中发送大约 450 行这些行。 我需要将行数提高到 1500 甚至更多。 我该怎么做?

我发现了很多类似的问题,但没有一个可以为我提供解决方案。

【问题讨论】:

您正在更改客户端配置。您需要更改服务器配置。 我不明白你的意思。你能解释一下吗? ***.com/questions/10122957/… 我已经添加了绑定,因为它们出现在我的服务器配置中。你能告诉我我需要改变什么吗? 我认为你需要添加一个绑定声明:&lt;basicHttpsBinding&gt;&lt;binding maxReceivedMessageSize="10485760"&gt;&lt;/binding&gt;&lt;/basicHttpsBinding&gt; 【参考方案1】:

你玩过 basicHttpBinding 中的 TransferMode 属性吗?将模式设置为“流式传输”

【讨论】:

如果我包含 TransferMode 属性,我会收到该属性不允许的消息。

以上是关于将 JSON 发送到 C# WCF 服务会导致:请求实体太大的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数组发布到 WCF Rest 服务会导致空参数。数据合同?

使用日期将 JQuery JSON 发送到 WCF REST

jQuery - 使用 ajax 调用将 JSON 发送到 WCF 服务为空

将 JSON 数据从 JQuery 发送到 WCF REST 方法时出现问题

从jquery发送数据到wcf Web服务

WCF 服务证书认证