已超出传入邮件的最大邮件大小配额 (65536)
Posted
技术标签:
【中文标题】已超出传入邮件的最大邮件大小配额 (65536)【英文标题】:The maximum message size quota for incoming messages (65536) has been exceeded 【发布时间】:2011-07-24 12:01:03 【问题描述】:我在为几个表创建范围时遇到了这个异常,所有这些表的设计都很庞大
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_ISyncServices" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows"
proxyCredentialType="None" realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="Windows"
negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
我已将MaxReceivedMessageSize
转为 2147483647
但它仍然在这一行给了我以下例外
client.GetTableDescription(scopeName, syncTable)
。 要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。
【问题讨论】:
WCF - How to Increase Message Size Quota的可能重复 ***.com/questions/884235/… WCF - How to Increase Message Size Quota的可能重复 【参考方案1】:根据this question's answer
你会想要这样的:
<bindings> <basicHttpBinding> <binding name="basicHttp" allowCookies="true" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000"> <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/> </binding> </basicHttpBinding> </bindings>
还请阅读 cmets 到那里接受的答案,那些包含有价值的输入。
【讨论】:
【参考方案2】:如果您使用的是 CustomBinding,那么您宁愿需要在 httptransport 元素中进行更改。 设置为
<customBinding>
<binding ...>
...
<httpsTransport maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
【讨论】:
我希望我能投票给这个 100X。我想知道我的 WCF 配置浪费了多少小时。 是的,你也为我节省了大量时间 在解决这个错误两周后,我是另一个非常高兴的人。我们在 C# 中有一个 BizTalk WCF 自定义行为,需要使用此更新 binding-template.xml。【参考方案3】:需要在SERVER和CLIENT上修改绑定配置(app.config文件中),否则不会生效。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxReceivedMessageSize="2147483647 " max...=... />
</basicHttpBinding>
</bindings>
</system.serviceModel>
【讨论】:
但这是真的。我遇到了同样的问题,直到我更改了客户端上的设置。然后就OK了。 如果有人会遇到类似的问题。我已经在 WCF 上设置了所有内容,但我仍然收到错误消息。在客户端上,我在下面添加了代码,之后就可以了。非常感谢@CarrieKendall。更新配置对我不起作用,但我能够以编程方式编辑绑定:
private YourAPIClient GetClient()
Uri baseAddress = new Uri(APIURL);
var binding = new BasicHttpBinding();
binding.MaxReceivedMessageSize = 20000000;
binding.MaxBufferSize = 20000000;
binding.MaxBufferPoolSize = 20000000;
binding.AllowCookies = true;
var readerQuotas = new XmlDictionaryReaderQuotas();
readerQuotas.MaxArrayLength = 20000000;
readerQuotas.MaxStringContentLength = 20000000;
readerQuotas.MaxDepth = 32;
binding.ReaderQuotas = readerQuotas;
if (baseAddress.Scheme.ToLower() == "https")
binding.Security.Mode = BasicHttpSecurityMode.Transport;
var client = new YourAPIClient(binding, new EndpointAddress(baseAddress));
return client;
【讨论】:
您将此放置在 WCF 服务的哪个部分? @Malky.Kid 我创建了这个客户端来调用基于 .net 的肥皂网络服务。【参考方案5】:您还需要增加maxBufferSize。另请注意,您可能需要增加readerQuotas。
【讨论】:
为什么 Visual Studio 将“maxBufferSize”标记为不允许?我有 VS 2010。 对于未来的访问者:maxBufferSize
必须匹配 maxReceivedMessageSize
,否则可能会抛出错误。【参考方案6】:
这对我有用:
Dim binding As New WebHttpBinding(WebHttpSecurityMode.Transport)
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
binding.MaxBufferSize = Integer.MaxValue
binding.MaxReceivedMessageSize = Integer.MaxValue
binding.MaxBufferPoolSize = Integer.MaxValue
【讨论】:
你把这个放在哪里了?上课吗?【参考方案7】:我的解决方案是在我的查询中使用“-OutBuffer 2147483647”参数,这是通用参数的一部分。 PS C:> Get-Help about_CommonParameters -Full
【讨论】:
【参考方案8】:对我来说,web.config
/ app.config
中的设置被忽略了。我最终手动创建了绑定,这为我解决了这个问题:
var httpBinding = new BasicHttpBinding()
MaxBufferPoolSize = Int32.MaxValue,
MaxBufferSize = Int32.MaxValue,
MaxReceivedMessageSize = Int32.MaxValue,
ReaderQuotas = new XmlDictionaryReaderQuotas()
MaxArrayLength = 200000000,
MaxDepth = 32,
MaxStringContentLength = 200000000
;
【讨论】:
以上是关于已超出传入邮件的最大邮件大小配额 (65536)的主要内容,如果未能解决你的问题,请参考以下文章
WCF MaxReceivedMessageSize:超出最大邮件大小配额
超过 (65536) 时如何增加 WCF 服务的传入消息的最大消息大小配额