将 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/… 我已经添加了绑定,因为它们出现在我的服务器配置中。你能告诉我我需要改变什么吗? 我认为你需要添加一个绑定声明:<basicHttpsBinding><binding maxReceivedMessageSize="10485760"></binding></basicHttpsBinding>
【参考方案1】:
你玩过 basicHttpBinding 中的 TransferMode 属性吗?将模式设置为“流式传输”
【讨论】:
如果我包含 TransferMode 属性,我会收到该属性不允许的消息。以上是关于将 JSON 发送到 C# WCF 服务会导致:请求实体太大的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 数组发布到 WCF Rest 服务会导致空参数。数据合同?
使用日期将 JQuery JSON 发送到 WCF REST
jQuery - 使用 ajax 调用将 JSON 发送到 WCF 服务为空